小编典典

将查询字符串参数添加到 link_to

all

我很难将查询字符串参数添加到 link_to UrlHelper。例如,我有一个索引视图,其中包含用于排序、过滤和分页的 UI 元素(通过
will_paginate)。will_paginate 插件正确管理查询字符串参数的页内持久性。

是否有自动机制将查询字符串参数添加到给定的命名路由,还是我需要手动添加?关于这个看似简单的结构的大量研究让我一无所知。

编辑

一些挑战:

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

    <%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
    
  2. 如果我有多个查询字符串参数、存储桶和排序和 page_size,并且我想将值设置为其中之一,有没有办法“自动”包含其余参数的名称和值?例如:

    <%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
    
  3. will_paginate 插件自动管理其页面变量和其他查询字符串变量。似乎没有用于管理页面大小的自动 UI 元素。虽然我已经看到了创建页面大小选择列表的代码,但我宁愿为此使用 A 元素(如 SO)。这个挑战的一部分与 #2 有关,部分与基于记录的存在/不存在隐藏/显示此 UI 元素有关。换句话说,如果有要分页的记录,我只想包含页面大小的链接。此外,我更喜欢自动包含其他 QS 变量(即页面、存储桶、排序),而不是在 link_to 中按名称包含它们。


阅读 62

收藏
2022-06-07

共1个答案

小编典典

link_to
的API 文档显示了一些将查询字符串添加到命名和旧式路由的示例。这是你想要的吗?

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&amp;baz=quux">Nonsense search</a>
2022-06-07