如果我将哈希转换为查询字符串,我该如何将它转换回来?Rails:相反的哈希#to_param
{:filters => {:colour => ['Red', 'Blue'], :size => 'Medium'}}.to_param
=> "filters[colour][]=Red&filters[colour][]=Blue&filters[size]=Medium"
Rails的出现,当它填充params
哈希自动做到这一点,但它可能直接调用此方法?
谢谢。
如果我将哈希转换为查询字符串,我该如何将它转换回来?Rails:相反的哈希#to_param
{:filters => {:colour => ['Red', 'Blue'], :size => 'Medium'}}.to_param
=> "filters[colour][]=Red&filters[colour][]=Blue&filters[size]=Medium"
Rails的出现,当它填充params
哈希自动做到这一点,但它可能直接调用此方法?
谢谢。
您正在寻找Rack::Utils.parse_nested_query(query)
,它会将其转换回Hash
。您可以使用此行得到它:
require 'rack/utils'
query_string = "filters[colour][]=Red&filters[colour][]=Blue&filters[size]=Medium"
CGI::parse(query_string)
好,但不是那里。这不会生成一个散列,其中包含一个带有* array *作为值的颜色键的散列值,这是'Rack :: Utils.parse_nested_query'的功能。 – 2011-05-18 18:08:12
'架:: Utils.build_nested_query( '过滤器[颜色] [] =红色和过滤器[颜色] [] =蓝和过滤器[大小] =中')'导致'ArgumentError:值必须是散列'。我究竟做错了什么? – gjb 2011-05-18 18:10:30
啊,我看你已经编辑了你的答案。 'parse_nested_query'完美无缺,谢谢! – gjb 2011-05-18 18:15:56
@gjb:对不起,我的不好,我一直在困惑。 – 2011-05-18 19:03:32