如何获得当前路径,包括GET参数,但没有框架参数

时间:2013-07-26 11:08:38

标签: ruby-on-rails

我有一个订单页面。此订单页面有多种可选过滤器,因此在任何给定时间,用户可能都是这样的路径:

/orders?from_date=05/01/2013&status=3

此页面上有一个按钮,用于导出用户正在查看的任何内容。当我点击此按钮时,我想点击完全相同的URL,只需格式为CSV。所以我在上面的例子中寻找的是:

/orders.csv?from_date=05/01/2013&status=3

首次尝试:

<%= link_to 'Export as CSV', current_url(:format => :csv) %>
=> /orders.csv?from_date=05/01/2013&status=3&action=show&controller=orders&subdomain=www

这包括我的参数,但它也包括一堆框架参数!

第二次尝试:

<%= link_to 'Export as CSV', url_for(:format => :csv) %>
=> /orders.csv

好的......删除了所有参数。

我错过了一个简单的方法来获得我想要的东西吗?

2 个答案:

答案 0 :(得分:1)

=link_to 'Export as CSV', 
url_for({format: :csv}.merge(params.except(:action, :controller, :subdomain))

答案 1 :(得分:1)

经过一番研究,我发现了这个解决方案:

<%= link_to 'Export to CSV', url_for(params.merge(:format => :csv)) %>

=> /orders.csv?from_date=05/01/2013&status=3

params哈希包含所有参数,包括我不想要的参数,但url_for正确地删除了路径所涵盖的参数。