Rails中to_query方法的相反方法是什么?

3

我使用to_query方法将哈希转换为参数。

如何将其转换回哈希?

我尝试过这样:

require 'rack'
@tester = Rack::Utils.parse_nested_query(params[:search])

在视图中:<%= @tester.class %>

它会返回 NilClass。

这些参数是:

"search"=>"fields%5B%5D=exhb_0&fields%5B%5D=exh0_1&fields%5B%5
D=t_g_a&fields%5B%5D=hp_1&fields%5B%5D=s1&fields%5B%5D=overflade_0&railing%5B%5D
=A-3&railing_m=0&type%5B%5D=ltrappa&wood%5B%5D=wood_6"
1个回答

9

这是此问题的重复:只需使用:

Rack::Utils.parse_query(my_query_string)

为了解码你示例中的行,请确保首先取消转义字符串:
require 'rack'

my_string = 'fields%5B%5D=exhb_0&fields%5B%5D=exh0_1&fields%5B%5D=t_g_a&fields%5B%5D=hp_1&fields%5B%5D=s1&fields%5B%5D=overflade_0&railing%5B%5D=A-3&railing_m=0&type%5B%5D=ltrappa&wood%5B%5D=wood_6'

unescaped_string = URI.unescape(my_string)
# => "fields[]=exhb_0&fields[]=exh0_1&fields[]=t_g_a&fields[]=hp_1&fields[]=s1&fields[]=overflade_0&railing[]=A-3&railing_m=0&type[]=ltrappa&wood[]=wood_6"

params_hash = Rack::Utils.parse_query(unescaped_string)
# => {"fields[]"=>["exhb_0", "exh0_1", "t_g_a", "hp_1", "s1", "overflade_0"], "railing[]"=>"A-3", "railing_m"=>"0", "type[]"=>"ltrappa", "wood[]"=>"wood_6"}

Rails初学者,你正在使用哪个版本的Rack? - oldhomemovie
你有什么线索表明它不起作用了吗?它已经过时了。http://apidock.com/rails/Rack/Utils/parse_query - Rails beginner
虽然该方法已被弃用,但在 rack 中仍未被移除,这对于 Rails 初学者来说是个好消息。你可以在 Rails 中使用它。如果你想使用 Rails 提供的方法,请参考:http://apidock.com/rails/ActionDispatch/Request/parse_query。 - oldhomemovie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接