首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向link_to添加查询字符串参数

向link_to添加查询字符串参数
EN

Stack Overflow用户
提问于 2010-04-23 01:01:53
回答 5查看 253.6K关注 0票数 234

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

是否有自动机制将querystring参数添加到给定的指定路由,或者需要手动添加?对这个看似简单的结构进行了大量的研究,使我不知所措。

编辑

一些挑战:

  1. 如果我有两个查询字符串参数,即桶和排序,那么如何在link_to中为其中一个参数设置一个特定值,同时保留另一个参数的当前值?例如: <%= link_to "0",profiles_path(:bucket => '0',:sorting=>??) %>
  2. 如果我有多个查询字符串参数,桶和排序& page_size,并且希望将值设置为其中之一,那么是否有一种方法可以“自动”包含其余参数的名称和值?例如: <%= link_to "0",profiles_path(:bucket => '0',此处包括排序和page_size名称/值) %>
  3. will_paginate插件自动管理其页面变量和其他查询字符串变量。似乎没有自动UI元素来管理页面大小。虽然我已经看到了创建页面大小选择列表的代码,但我还是希望有A元素来实现这一点(就像这样)。此挑战的一部分与#2有关,部分与隐藏/显示基于记录的存在/不存在的UI元素有关。另一种方式,我只想包括页面大小的链接,如果有记录到页。此外,我更喜欢自动地包含其他QS变量(即页面、桶、排序),而不是在link_to中按名称包含它们。
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-23 03:18:01

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

link_to还可以生成具有锚点或查询字符串的链接:

代码语言:javascript
运行
复制
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>
票数 369
EN

Stack Overflow用户

发布于 2012-04-01 09:28:51

如果您想要快速和肮脏的方式,并且不担心XSS攻击,请使用params.merge来保留以前的参数。例如:

代码语言:javascript
运行
复制
<%= link_to 'Link', params.merge({:per_page => 20}) %>

请参阅:https://stackoverflow.com/a/4174493/445908

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

票数 49
EN

Stack Overflow用户

发布于 2014-05-10 07:41:11

如果希望保留现有的params,而不暴露于XSS攻击,请确保清除params散列,只留下应用程序可以发送的params:

代码语言:javascript
运行
复制
# inline
<%= link_to 'Link', params.slice(:sort).merge(per_page: 20) %>

如果您在多个地方使用它,请清除控制器中的params:

代码语言:javascript
运行
复制
# your_controller.rb
@params = params.slice(:sort, :per_page)

# view
<%= link_to 'Link', @params.merge(per_page: 20) %>
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2695538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档