将:filter param添加到url的末尾

时间:2010-05-04 02:23:13

标签: ruby-on-rails ruby hyperlink

我正在构建一个需要搜索比初始级别更深入的应用程序。我正在使用嵌套作用域来完成此操作并在URL

中使用params

例如,当用户搜索“手提包”时,它会创建如下的查询。

http://localhost:3000/junks?search=handbag&condition=&category=&main_submit=Go!

我想在此网址的末尾添加:filter param并使用新网址重新加载页面。

http://localhost:3000/junks?search=handbag&condition=&category=&main_submit=Go!&filter=lowest_price

如上所示,& filter = lowest_price被添加到查询中。我已经编写了控制器代码来处理这个问题,我知道只要查询就像上面的第二个链接一样。

我的观点代码

 <div class = "filter_options">
    <p>
      <strong>Filter by:</strong>
      <%= link_to_unless_current "Recent", :filter => 'recent' %> |
      <%= link_to_unless_current "Lowest Price", :filter => 'lowest_price' %> |
      <%= link_to_unless_current "Highest Price", :filter => 'highest_price' %>
    </p>
</div>

这就是我目前的方式,如果我的网址没有附加搜索字符串,则可以使用。不幸的是,即使有搜索字符串,也会转到http://localhost:3000/junks?filter=lowest_price。我想知道如何创建我的链接,以便它们添加到第二个代码示例中显示的搜索字符串。

此外,如果已存在带过滤器的搜索字符串,则只会更改该过滤器并使用新过滤器重新提交搜索字符串。我希望我很清楚。

1 个答案:

答案 0 :(得分:2)

你的意思是,像:

link_to "Recent", url_for(params.merge :filter => 'recent')