我在网络应用程序上工作,我有这个"Registration"页面 . 我想在访问节目页面时呈现一个pdf页面 . 但是当我点击show按钮时,会加载一个正常的html页面,内容就像一个转储,所有的乱码(这里是内容的要点:https://gist.github.com/anonymous/0806200b7ca31bba35d3a514a7ff90e6) . 但是,当我刷新页面时,它会完美呈现pdf .
我检查了url和params是否有任何差异但是一切都是一样的 . 我还检查了实例变量,它们是相同的 . 我搜索了这个问题并没有找到任何内容 .
这是show动作中的渲染代码:
respond_to do |format|
format.html do
render pdf: 'customer_print_out.pdf',
file: "#{Rails.root}/app/views/pdf/customer_print_out.pdf.erb",
page_size: 'A4',
encoding: 'UTF-8'
end
end
我想请注意,我正在pdf文件中生成条形码 . 刷新页面时也正确加载,当我删除条形码生成代码时,我仍然遇到同样的问题 .
我正在使用: Rails v4.2.6, wicked_pdf v1.1.0, puma v3.6.0
任何帮助或指示真的很感激 .
2 回答
要呈现pdf,请执行以下操作:
在config / initializers / mime_types.rb文件中注册PDF mime类型:
Mime::Type.register "application/pdf", :pdf
在您的控制器中执行以下操作:
请求应采用
pdf
格式,例如:your_controller_path(format: :pdf)
我认为你应该使用
format.pdf
而不是format.html
也不要忘记在按钮的代码中将格式指定为
pdf
,类似于