给link_to添加查询字符串参数
给link_to添加查询字符串参数
我在尝试给UrlHelper的link_to添加查询字符串参数时遇到了困难。例如,我有一个Index视图,它具有用于排序、过滤和分页(通过will_paginate)的UI元素。will_paginate插件正确管理查询字符串参数的页内持久性。
是否有自动机制将查询字符串参数添加到特定命名路由中,还是我需要手动添加?对于这个看似简单的构造,大量的研究让我一筹莫展。
编辑
一些挑战:
-
- 如果我有两个查询字符串参数bucket和sorting,我如何在link_to中设置其中一个的特定值,同时保留另一个的当前值?例如:
<%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
-
- 如果我有多个查询字符串参数bucket、sorting和page_size,我想将值设置为其中一个,是否有一种“自动”包含其余参数名称和值的方法?例如:
<%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
- will_paginate插件自动管理其页面变量和其他查询字符串变量。似乎没有自动UI元素来管理页面大小。虽然我看到过创建页面大小选择列表的代码,但我更喜欢像SO那样使用A元素。其中一部分挑战与#2相关,另一部分与根据记录的存在/不存在来隐藏/显示此UI元素相关。换句话说,如果有记录要进行分页,我只想包括页面大小链接。此外,我更喜欢自动包括其他QS变量(即页面、bucket、sorting),而不是在link_to中按名称包括它们。
admin 更改状态以发布 2023年5月24日
如果你想要一种快速而不担心XSS攻击的方法,可以使用params.merge
来保留之前的参数。例如:
<%= link_to 'Link', params.merge({:per_page => 20}) %>
看: https://stackoverflow.com/a/4174493/445908
否则,请查看这个答案:params.merge和跨站点脚本
链接地址为link_to的API文档,文档中展示了添加查询字符串到命名路由和旧风格路由的示例。这是你想要的吗?
link_to
也可以生成包含锚点或查询字符串的链接:
link_to "Comment wall", profile_path(@profile, :anchor => "wall") #=> Comment wall link_to "Ruby on Rails search", :controller => "searches", :query => "ruby on rails" #=> Ruby on Rails search link_to "Nonsense search", searches_path(:foo => "bar", :baz => "quux") #=> Nonsense search