Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何获取当前路径,包括get参数,但不包含框架参数_Ruby On Rails - Fatal编程技术网

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那么,是否可以尝试将允许的参数改为白名单?