我正在尝试呈现xlsx
文件。但是我一直收到406/UnknowFormat
。我已经完成了正确的设置,也许我错过了一些东西?
Rails 4.2应用
gem 'axlsx'
gem "axlsx_rails"
gem 'zip-zip'
config/initializers/mime
Mime::Type.register "application/xlsx", :xlsx
Controller
respond_to do |format|
format.xlsx { render xlsx: "create", template: "api/reports/create" }
end
View /api/报告/create.xlsx.axlsx
wb = xlsx_package.workbook
wb.add_worksheet(name: "Reports") do |sheet|
sheet.add_row [@report_name]
end
最佳答案
您得到的错误并不意味着Rails找不到xlsx格式:这意味着它已将您提供的格式列表(即xlsx)进行了比较,并将其与它认为浏览器的格式集进行了比较愿意接受并且没有发现任何重叠。
如果看起来只有一种格式要渲染,则根本不需要使用respond_to
-只需将整个内容替换为
render xlsx: "create", template: "api/reports/create"
Rails从url上的扩展名和Accept header 中得出它认为可接受的格式。格式协商通常是通过扩展而不是Accept header 完成的-链接(或发布)到
/some/path.xlsx
应该将格式设置为xlsx。您可以通过在传递给路径帮助程序的选项中包括format: 'xlsx'
或作为路由选项的哈希的一部分来做到这一点。关于ruby-on-rails - Rails ActionController未知格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33414746/