2011-05-18 26 views
15

Bir hashı bir sorgu dizesine dönüştürürsem, nasıl tekrar geri dönüştürebilirim? Raylar: Hash # to_param Karşısı

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

Raylar

o params karma doldurur zaman otomatik olarak yapmak için görünür, ancak bu yöntemi doğrudan çağırmanız mümkün mü?

Teşekkürler.

cevap

29

Hash ürününe geri dönüş yapacak olan Rack::Utils.parse_nested_query(query) modelini arıyorsunuz. `

require 'rack/utils' 
+0

' Raf :: Utils.build_nested_query ('filtreler [color] [] = Kırmızı & filtreler [color] [] = Blue & filtreleri [size] = Orta'): Bu hattı kullanarak bunu elde edebilirsiniz 'ArgumentError: sonuç bir Hash olmalı' sonucunu verir. Neyi yanlış yapıyorum? – gjb

+0

Ahh, Görüyorum ki cevabınızı düzenlediniz. 'parse_nested_query' mükemmel çalışır, teşekkürler! – gjb

+0

@gjb: Evet üzgünüm, her zaman kafam karıştı. –

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

İyi, ama tam olarak değil. Bu, bir Rack * Utils.parse_nested_query'nin yaptığı bir * dizi * değerine sahip bir renk anahtarıyla bir hash olan bir süzgeç anahtarı ile bir karma oluşturmaz. –