Rails ActionControllerの不明な形式
概要
xlsxファイルをレンダリングしようとしています。しかし、406/UnknowFormat が発生し続けます。正しいセットアップを行ったのですが、何かが足りないのでしょうか?
Rails 4.2 アプリ
gem 'axlsx'
gem "axlsx_rails"
gem 'zip-zip'
設定/イニシャライザ/MIME
Mime::Type.register “application/xlsx”、:xlsx
コントローラ
respond_to do |format|
format.xlsx { render xlsx: "create", template: "api/reports/create" }
end
ビュー/api/レポート/create.xlsx.axlsx
wb = xlsx_package.workbook
wb.add_worksheet(name: "Reports") do |sheet|
sheet.add_row [@report_name]
end
解決策
私の場合、Rails 4.2 では拡張子を含む完全なテンプレート ファイル名を指定する必要がありました。 axlsx_rails のドキュメントによると、Rails 4.2 では構文が異なります。私にとってうまくいったのは次のとおりです。
some_controller.rb
def create_report
render "template_path/report.xlsx.axlsx"
end
テンプレートパス/レポート.xlsx.axlsx
wb = xlsx_package.workbook
wb.add_worksheet(:name => "Basic Worksheet") do |sheet|
sheet.add_row ["First Column", "Second", "Third"]
end