Камень Axlsx-Rails не работает должным образом, показывает отсутствующий шаблон
У меня есть такая ссылка
<%= 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 и следую его документации. Но я получаю эту ошибку
Missing template horses/import_horse_report, application/import_horse_report with {:locale=>[:en], :formats=>[:xlsx], :handlers=>[:erb, :builder, :coffee, :rabl]}
Как я могу решить это?
3 ответа
Вы можете попробовать конкретно, что XLS будет отображаться путем изменения
format.xlsx{ }
в
format.xlsx{ filename =>'import_horse_report.xlsx' }
Я исправил это с помощью
render xlsx: "import_horse_report"
а не response_to. Это может быть вариант в зависимости от вашей ситуации.
Попробуйте явное выражение рендеринга:
format.xlsx { render xlsx: 'import_horse_report' }
Если вы звоните /horses/import_horse_report
без запаздывания .xlsx
оператор рендеринга не будет выполнен, пока вы не принудительно :xlsx
формат в файле маршрутов. Если вы хотите сохранить свой respond_to
блок, измени свой URL. В противном случае вы можете бросить respond_to
блок для простого render :xlsx
заявление (при условии, что вы никогда больше не будете служить.)