2011-05-18 88 views
15

如果我将哈希转换为查询字符串,我该如何将它转换回来?Rails:相反的哈希#to_param

{:filters => {:colour => ['Red', 'Blue'], :size => 'Medium'}}.to_param 
=> "filters[colour][]=Red&filters[colour][]=Blue&filters[size]=Medium" 

Rails的出现,当它填充params哈希自动做到这一点,但它可能直接调用此方法?

谢谢。

回答

29

您正在寻找Rack::Utils.parse_nested_query(query),它会将其转换回Hash。您可以使用此行得到它:

require 'rack/utils' 
+0

'架:: Utils.build_nested_query( '过滤器[颜色] [] =红色和过滤器[颜色] [] =蓝和过滤器[大小] =中')'导致'ArgumentError:值必须是散列'。我究竟做错了什么? – gjb 2011-05-18 18:10:30

+0

啊,我看你已经编辑了你的答案。 'parse_nested_query'完美无缺,谢谢! – gjb 2011-05-18 18:15:56

+0

@gjb:对不起,我的不好,我一直在困惑。 – 2011-05-18 19:03:32

1
query_string = "filters[colour][]=Red&filters[colour][]=Blue&filters[size]=Medium" 
CGI::parse(query_string) 
+1

好,但不是那里。这不会生成一个散列,其中包含一个带有* array *作为值的颜色键的散列值,这是'Rack :: Utils.parse_nested_query'的功能。 – 2011-05-18 18:08:12