実際に表示されているのは、ビューsans .erbの名前であり、必ずしもコントローラーアクションではないことを期待しています。
そのレベルの制御が必要な場合は、3つの方法があります。
- filename:オプションでキャストされたレールに示されているように、タブで区切られたデータを使用して、コントローラーからのsend_data呼び出しを使用します。
例えば
class ProductsController < ApplicationController
def index
@products = Product.order(:name)
respond_to do |format|
format.html
format.csv { send_data @products.to_csv }
format.xls { send_data @products.to_csv(col_sep: "\t"), filename: 'your_file_name.xls'}
end
end
end
このアプローチと、railscastで導入された古い適切なspreadsheetML言語には問題がありますが、ユーザーベースがMS-OFFICEに固定されている場合、誰も気付かないと思います。
- または、axlsxgemを使用するacts_as_xlsxやaxlsx_railsなどのgemを使用することもできます。これらのツールは、検証済みのxlsxデータ(Office Open XML / ECMA-376とも呼ばれます-またはMSがOffice2007以降使用しているもの...)を生成し、Numbers、GoogleDocs、LibraOfficeなどの他の最新のスプレッドシートソフトウェアとの相互運用性がかなり良好です。Railscastでこれに関連するすべてのコメントに気づいたと思います。
私は著者またはaxlsxであり、それらの制限と、そもそもaxlsxを作成するきっかけとなったスタイリング、チャート、検証の欠如からです。
詳細:axlsx:https ://github.com/randym/axlsx
Acts_as_xlsx:
http ://axlsx.blogspot.jp/2011/12/using-actsasxlsx-to-generate-excel-data.html
axlsx_railsは、標準のRailsビューを使用できるように、独自のレンダラーとレスポンダーを作成する方法の優れた例でもありますが、ダウンロードされるファイルの名前を変更します。
https://github.com/straydogstudio/axlsx_rails/blob/master/lib/axlsx_rails/action_controller.rb