给link_to添加查询字符串参数

7 浏览
0 Comments

给link_to添加查询字符串参数

我在尝试给UrlHelper的link_to添加查询字符串参数时遇到了困难。例如,我有一个Index视图,它具有用于排序、过滤和分页(通过will_paginate)的UI元素。will_paginate插件正确管理查询字符串参数的页内持久性。

是否有自动机制将查询字符串参数添加到特定命名路由中,还是我需要手动添加?对于这个看似简单的构造,大量的研究让我一筹莫展。

编辑

一些挑战:

    1. 如果我有两个查询字符串参数bucket和sorting,我如何在link_to中设置其中一个的特定值,同时保留另一个的当前值?例如:

<%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>

    1. 如果我有多个查询字符串参数bucket、sorting和page_size,我想将值设置为其中一个,是否有一种“自动”包含其余参数名称和值的方法?例如:

<%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>

  1. will_paginate插件自动管理其页面变量和其他查询字符串变量。似乎没有自动UI元素来管理页面大小。虽然我看到过创建页面大小选择列表的代码,但我更喜欢像SO那样使用A元素。其中一部分挑战与#2相关,另一部分与根据记录的存在/不存在来隐藏/显示此UI元素相关。换句话说,如果有记录要进行分页,我只想包括页面大小链接。此外,我更喜欢自动包括其他QS变量(即页面、bucket、sorting),而不是在link_to中按名称包括它们。
admin 更改状态以发布 2023年5月24日
0
0 Comments

如果你想要一种快速而不担心XSS攻击的方法,可以使用params.merge来保留之前的参数。例如:

<%= link_to 'Link', params.merge({:per_page => 20}) %>

看: https://stackoverflow.com/a/4174493/445908

否则,请查看这个答案:params.merge和跨站点脚本

0
0 Comments

链接地址为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

0