Rails中没有合适的方法实现这个功能
php倒是很简单 parse_string 函数就可以搞定
CGI::parse 的行为又很古怪,基本不可以用
>> CGI.parse({:a=>"b"}.to_param)
=> {"a"=>["b"]}
注意 Hash.to_param 是 ActiveSupport 支持的
{:a=>"b",:c=>"d"}.to_param => "a=b&c=d"
现在如果使用了rack的rails可以使用这个方法来
Rack::Utils.parse_query
>> Rack::Utils.parse_query({:a=>"b"}.to_param)
=> {"a"=>"b"}
>> Rack::Utils.parse_query({:a=>["b","c"]}.to_param)
=> {"a[]"=>["b", "c"]}
escape的话可以用这个
Rack::Utils.unescape
Rack::Utils.escape
如果没有使用 rack 的 rails
比如 rails 1.x
可以使用这个 Addressable
uri = Addressable::URI.parse("http://example.com/?var=value")
uri.query_values # => {"var"=>"value"}
uri.query_values = {"one" => "1", "two" => "2"}
uri.to_s # => "http://example.com/?two=2&one=1"


