>> urllib.-6ren">
gpt4 book ai didi

ruby-on-rails - 将 ruby​​ 哈希转换为 URL 查询字符串......没有那些方括号

转载 作者:行者123 更新时间:2023-12-04 01:23:29 24 4
gpt4 key购买 nike

在 Python 中,我可以这样做:

>>> import urlparse, urllib
>>> q = urlparse.parse_qsl("a=b&a=c&d=e")
>>> urllib.urlencode(q)
'a=b&a=c&d=e'

在 Ruby[+Rails] 中,如果不“滚动我自己的”,我无法弄清楚如何做同样的事情,这看起来很奇怪。 Rails 方式对我不起作用——它向查询参数的名称添加方括号,另一端的服务器可能支持也可能不支持:
>> q = CGI.parse("a=b&a=c&d=e")
=> {"a"=>["b", "c"], "d"=>["e"]}
>> q.to_params
=> "a[]=b&a[]=c&d[]=e"

我的用例只是我希望处理 query-string 中某些值的值。 URL 的一部分。依靠标准库和/或 Rails 并编写如下内容似乎很自然:
uri = URI.parse("http://example.com/foo?a=b&a=c&d=e")
q = CGI.parse(uri.query)
q.delete("d")
q["a"] << "d"
uri.query = q.to_params # should be to_param or to_query instead?
puts Net::HTTP.get_response(uri)

但前提是结果 URI 实际上是 http://example.com/foo?a=b&a=c&a=d ,而不是 http://example.com/foo?a[]=b&a[]=c&a[]=d .有没有正确或更好的方法来做到这一点?

最佳答案

在现代 ruby 中,这很简单:

require 'uri'
URI.encode_www_form(hash)

关于ruby-on-rails - 将 ruby​​ 哈希转换为 URL 查询字符串......没有那些方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4654708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com