2011-05-18 48 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