Axlsx-Rails gem无法正常工作,显示缺少模板

时间:2014-06-05 04:54:30

标签: ruby-on-rails xlsx axlsx

我有这样的链接

<%= link_to "download file", import_horse_report_horses_path(format: 'xlsx') %>

然后在控制器操作中我有以下代码

 def import_horse_report
    @horses = ImportHorse.all        
    respond_to do |format|
      format.xlsx{ }
    end
  end

对于此操作,我有此模板import_horse_report.xlsx.axlsx

wb = xlsx_package.workbook
wb.add_worksheet(name: "Horses") do |sheet|
  @horses.each do |horse|
    sheet.add_row [horse.breed, horse.date_of_birth, horse.gender]
  end
end

我正在使用axlsx_rails gem并遵循其文档。但是我得到了这个错误

Missing template horses/import_horse_report, application/import_horse_report with {:locale=>[:en], :formats=>[:xlsx], :handlers=>[:erb, :builder, :coffee, :rabl]}

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

您可以通过更改

来具体尝试渲染xls
format.xlsx{ }

format.xlsx{ filename =>'import_horse_report.xlsx' }

REF: https://github.com/straydogstudio/axlsx_rails

答案 1 :(得分:0)

尝试使用显式的render语句:

format.xlsx { render xlsx: 'import_horse_report' }

如果在没有尾随/horses/import_horse_report的情况下调用.xlsx,则除非在路由文件中强制使用:xlsx格式,否则不会执行render语句。如果您想保留respond_to阻止,请更改您的网址。否则,您可以删除respond_to块以获取简单的render :xlsx语句(前提是您将永远不会提供任何其他内容。)

答案 2 :(得分:0)

我使用

解决了这个问题
render xlsx: "import_horse_report" 

而不是respond_to。根据您的情况,这可能是一种选择。