Ruby on rails 如何获取当前路径,包括get参数,但不包含框架参数
我有一个订单页面。此订单页面具有多种可选过滤器,因此在任何给定时间,用户可能处于如下路径:Ruby on rails 如何获取当前路径,包括get参数,但不包含框架参数,ruby-on-rails,Ruby On Rails,我有一个订单页面。此订单页面具有多种可选过滤器,因此在任何给定时间,用户可能处于如下路径: /orders?from_date=05/01/2013&status=3 此页面上有一个按钮,可将用户正在查看的内容导出为CSV。当我点击这个按钮时,我想点击完全相同的URL,只是使用CSV格式。因此,我在上述示例中寻找的是: /orders.csv?from_date=05/01/2013&status=3 第一次尝试: <%= link_to 'Export as CSV'
/orders?from_date=05/01/2013&status=3
此页面上有一个按钮,可将用户正在查看的内容导出为CSV。当我点击这个按钮时,我想点击完全相同的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
:csv)%>
=>/orders.csv?自2013年1月5日起&status=3&action=show&controller=orders&subdomain=www
这包括我的参数,但它也包括一堆框架参数
第二次尝试:
<%= link_to 'Export as CSV', url_for(:format => :csv) %>
=> /orders.csv
:csv)%>
=>/orders.csv
好的。。。这删除了所有参数
我是否错过了一个简单的方法来获得我想要的东西?经过进一步研究,我找到了以下解决方案:
=link_to 'Export as CSV',
url_for({format: :csv}.merge(params.except(:action, :controller, :subdomain))
<%= link_to 'Export to CSV', url_for(params.merge(:format => :csv)) %>
=> /orders.csv?from_date=05/01/2013&status=3
:csv))%>
=>/orders.csv?自2013年1月5日起&status=3
params
散列包含所有参数,包括我不想要的参数,但是url\u for
正确地去除了路由覆盖的参数。很公平。。。虽然在我的实际案例中,这个URL可以嵌套得相当深(例如,/companys/14/teams/37/orders
)-这意味着其他一些\u id
字段也在参数列表中。理想情况下,我可以以某种方式排除作为路由一部分的所有参数,而不必列出所有参数。@ElliotNelson那么,是否可以尝试将允许的参数改为白名单?