2017-05-09 11 views
1

私はparams [:q]がハッシュのようなリンクを持っています。リンクにハッシュを渡すことはエンコードされません

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

そして

<%= params[:q] %> 

<%の= paramsはそれを書き出すビューで何が起こっているかを参照するには、[:Q]%>正しく

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

としてハッシュを書き出しますがしかし、このURLは、

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

リンクをクリックすると、パラメータが文字列として推論されます。

ハッシュをリンクに渡してから、コントローラーにハッシュを戻したいとします。これを行う簡単な方法はありますか?ありがとう!

+0

実際のURL形式のhref = "/スライド?Q = FOO%の3D%の26bar%の3D%26goo%の3D%26bar3D3" –

+0

あなたは 'URI.decode(のparams)'のような何かをしようとしたことがありますか? –

答えて

0

レール中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]) %> 
+0

完全に動作します。ありがとう。 –

関連する問題