我有一个订单页面。此订单页面有多种可选过滤器,因此在任何给定时间,用户可能都是这样的路径:
/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
好的......删除了所有参数。
我错过了一个简单的方法来获得我想要的东西吗?
答案 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
正确地删除了路径所涵盖的参数。