将哈希传递到链接中不会被编码

时间:2017-05-09 16:32:56

标签: ruby-on-rails-5

我有一个像这样的链接,其中params [:q]是一个哈希。

<%= link_to "My Path", slides_path(query:params[:q]) %>

要查看视图中发生了什么,请将其写出来

<%= params[:q] %>

&lt;%= params [:q]%&gt;将正确写出哈希为

{:foo => :bar ,:goo => :bar}

但是网址编码为

"q"=>"foo=bar&goo=bar" 

因此,当单击链接时,参数将被推断为字符串。

我想将哈希值传递给链接,然后让控制器获取哈希值。有一个简单的方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

在rails 5中params不再是Hash的子类(出于安全原因)。
请参阅:Rails 5: unable to retrieve hash values from parameter

要解决此问题,您可以致电to_unsafe_h 它会将params转换为正确的哈希值,从而在url中正确编码。

<%= link_to "My Path", slides_path(query: params.to_unsafe_h[:q]) %>