前提・実現したいこと
Rails6で作成したアプリの中に
gem axlsx を使ってexcelを出力する機能を作っています。
development環境ではうまくいく(エラーなく目的のexcelがきちんと出力できる)のですが、
production環境だとmissing templateになってしまいます。
発生している問題・エラーメッセージ
テンプレート自体は [AppName]/app/views の中に入っています。
Error during failsafe response: Missing template errors/internal_server_error with {:locale=>[:en], :formats=>[:xlsx], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :axlsx, :jbuilder]}. Searched in: * "/Users/[UserName]/Desktop/app/[AppName]/app/views" * "/Users/[UserName]/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/kaminari-core-1.2.0/app/views" * "/Users/[UserName]/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actiontext-6.0.2.1/app/views" * "/Users/[UserName]/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionmailbox-6.0.2.1/app/views"
該当のソースコード
view
1 <%= button_to excela_path(format: :xlsx), { method: :get } do %>excel_a<% end %> 2 <%= button_to excelb_path(format: :xlsx), { method: :get } do %>excel_b<% end %> 3
Controller
1def excela 2 @data = User.where(category: "a") 3 respond_to do |format| 4 format.html 5 format.xlsx do 6 response.headers['Content-Disposition'] = 'attachment; filename="excel_a"'+ Time.zone.now.strftime("%Y-%m-%d") + ".xlsx" 7 end 8 end 9end 10 11def excelb 12 @data = User.where(category: "b") 13 respond_to do |format| 14 format.html 15 format.xlsx do 16 response.headers['Content-Disposition'] = 'attachment; filename="excel_b"'+ Time.zone.now.strftime("%Y-%m-%d") + ".xlsx" 17 end 18 end 19end
それぞれ excela.xlsx.axlsx、excelb.xlsx.axlsx というテンプレートが呼び出されて@dataが書き込まれるという仕様です。
試したこと
似たようなエラーのissueがあったのですが、解決には至りませんでした。
https://github.com/caxlsx/caxlsx_rails/issues/61
なおGemlockはこうなっています。
Gemlock
1 caxlsx (3.0.1) 2 htmlentities (~> 4.3, >= 4.3.4) 3 mimemagic (~> 0.3) 4 nokogiri (~> 1.10, >= 1.10.4) 5 rubyzip (>= 1.3.0, < 3) 6 caxlsx_rails (0.6.2) 7 actionpack (>= 3.1) 8 caxlsx (>= 3.0)
補足情報(FW/ツールのバージョンなど)
ruby 2.6.5p114
Rails 6.0.2.1
caxlsx (3.0.1)
caxlsx_rails (0.6.2)
rubyzip 2.2.0
(axlsxはcaxlsxにrenameされたとwarningがでたので、gem fileもそのようにしています。 axlsxでも同じエラーが出ています)
どなたかわかる方いらっしゃいましたらご教示いただけると大変助かります。
よろしくお願いします。
あなたの回答
tips
プレビュー