我很难向link_to UrlHelper添加查询字符串参数。例如,我有一个索引视图,它有用于排序、过滤和分页的UI元素(通过will_paginate)。will_paginate插件正确地管理查询字符串参数的页内持久性。
是否有自动机制将querystring参数添加到给定的指定路由,或者需要手动添加?对这个看似简单的结构进行了大量的研究,使我不知所措。
编辑
一些挑战:
发布于 2010-04-23 03:18:01
至展示了一些将查询字符串添加到命名和旧样式路由的示例。这是你想要的吗?
link_to
还可以生成具有锚点或查询字符串的链接:
link_to "Comment wall", profile_path(@profile, :anchor => "wall")
#=> <a href="/profiles/1#wall">Comment wall</a>
link_to "Ruby on Rails search", :controller => "searches", :query => "ruby on rails"
#=> <a href="/searches?query=ruby+on+rails">Ruby on Rails search</a>
link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux")
#=> <a href="/searches?foo=bar&baz=quux">Nonsense search</a>
发布于 2012-04-01 09:28:51
如果您想要快速和肮脏的方式,并且不担心XSS攻击,请使用params.merge
来保留以前的参数。例如:
<%= link_to 'Link', params.merge({:per_page => 20}) %>
请参阅:https://stackoverflow.com/a/4174493/445908
否则,请检查这个答案:params.merge和跨站点脚本
发布于 2014-05-10 07:41:11
如果希望保留现有的params,而不暴露于XSS攻击,请确保清除params散列,只留下应用程序可以发送的params:
# inline
<%= link_to 'Link', params.slice(:sort).merge(per_page: 20) %>
如果您在多个地方使用它,请清除控制器中的params:
# your_controller.rb
@params = params.slice(:sort, :per_page)
# view
<%= link_to 'Link', @params.merge(per_page: 20) %>
https://stackoverflow.com/questions/2695538
复制相似问题