2

注文ページがあります。この注文ページにはさまざまなオプションのフィルターがあるため、ユーザーはいつでも次のようなパスにいる可能性があります。

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

このページには、ユーザーが表示しているものを CSV としてエクスポートするボタンがあります。このボタンをクリックすると、CSV の形式だけで、まったく同じ URL にアクセスしたいと考えています。したがって、上記の例で探しているのは次のとおりです。

/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

これには私のパラメーターが含まれますが、フレームワークのパラメーターも多数含まれています。

2 回目の試行:

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

OK...すべてのパラメータが削除されました。

欲しいものを簡単に手に入れる方法がありませんか?

4

2 に答える 2

1

さらに調査した結果、次の解決策を見つけました。

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

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

ハッシュには、params不要なものを含むすべてのパラメーターが含まれてurl_forいますが、ルートでカバーされているパラメーターを正しく削除しています。

于 2013-07-26T13:56:16.807 に答える
1
=link_to 'Export as CSV', 
url_for({format: :csv}.merge(params.except(:action, :controller, :subdomain))
于 2013-07-26T11:29:46.997 に答える