Ruby on rails 添加查询字符串参数以链接到

Ruby on rails 添加查询字符串参数以链接到,ruby-on-rails,query-string,Ruby On Rails,Query String,我很难添加querystring参数来将_链接到UrlHelper。例如,我有一个索引视图,其中包含用于排序、筛选和分页(通过will_paginate)的UI元素。will_paginate插件正确管理querystring参数的页内持久性 是否有自动机制将querystring参数添加到给定的命名路由,还是需要手动添加?对这个看似简单的结构进行了大量的研究,我对此一无所知 编辑 其中一些挑战: 如果我有两个querystring参数,bucket和sorting,那么如何在链接中为其中一个设

我很难添加querystring参数来将_链接到UrlHelper。例如,我有一个索引视图,其中包含用于排序、筛选和分页(通过will_paginate)的UI元素。will_paginate插件正确管理querystring参数的页内持久性

是否有自动机制将querystring参数添加到给定的命名路由,还是需要手动添加?对这个看似简单的结构进行了大量的研究,我对此一无所知

编辑

其中一些挑战:

  • 如果我有两个querystring参数,bucket和sorting,那么如何在链接中为其中一个设置特定值,同时保留另一个的当前值?例如:

    <%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
    
    <%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
    
    '0',:排序=>??)%>
    
  • 如果我有多个querystring参数,bucket&sorting&page_size,并且我想将该值设置为其中一个,是否有方法“自动”包含其余参数的名称和值?例如:

    <%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
    
    <%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
    
    '0',[此处包括排序和页面大小名称/值]%>
    
  • will_paginate插件自动管理其页面变量和其他查询字符串变量。似乎没有用于管理页面大小的自动UI元素。虽然我看过创建页面大小选择列表的代码,但我更希望有一个用于此的元素(如下所示)。此挑战的一部分与#2有关,另一部分与根据记录的存在/不存在隐藏/显示此UI元素有关。换句话说,我只想在有记录的页面中包含页面大小的链接。此外,我更喜欢自动包含其他QS变量(即page、bucket、sorting),而不必在链接中按名称包含它们

  • 显示了向命名管线和旧样式管线添加查询字符串的一些示例。这是你想要的吗

    link\u 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>
    
    链接到“评论墙”,配置文件路径(@profile,:anchor=>“墙”)
    #=> 
    链接到“RubyonRails搜索”,控制器=>“搜索”,查询=>“RubyonRails”
    #=> 
    链接到“无意义搜索”,搜索路径(:foo=>“bar”,:baz=>“quux”)
    #=> 
    
    如果您想要快速而肮脏的方式,并且不担心XSS攻击,请使用
    params.merge
    保留以前的参数。e、 g

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


    否则,请检查此答案:

    如果您希望保留现有参数,并且不让自己暴露于XSS攻击,请确保清除参数散列,只保留应用程序可以发送的参数:

    # inline
    <%= link_to 'Link', params.slice(:sort).merge(per_page: 20) %>
    
    #内联
    

    如果在多个位置使用,请清除控制器中的参数:

    # your_controller.rb
    @params = params.slice(:sort, :per_page)
    
    # view
    <%= link_to 'Link', @params.merge(per_page: 20) %>
    
    #您的_controller.rb
    @params=params.slice(:排序,:每页)
    #看法
    
    如果您想传入一个块,比如说一个glyphicon按钮,如下所示:

    <%= link_to my_url, class: "stuff" do %>
      <i class="glyphicon glyphicon-inbox></i> Nice glyph-button
    <% end %>
    
    
    漂亮的字形按钮
    
    您的回答帮助我解决了#1:'0',:sorting=>params[:sorting])%>。谢谢,这是对的。新语法是“可能与密切相关的重复:不要这样做,它会使您面临xss攻击”。@DanielNill-可以吗explain@Yarin这里有一个很好的解释,@Yarin任意将参数打印到用户提交的页面中(不一定要清理)允许某人使用编码Javascript的链接链接到您的站点。然后,Javascript被打印到页面并执行,可能会窃取cookie或执行恶意任务。Rails通常非常擅长清理打印到页面中的内容,但最好是安全的