我一直在将Ruby on Rails(5.2.1版)和RubyMine IDE一起用于一个项目,并且处于开发阶段,我想在其中创建一些基于PDF的报告。为此,我抓住了Prawn(2.2.2版)宝石。我设置了一个按钮,可以从页面下载PDF:
<%= button_to "Download", action: :download_report %>
它被路由到适当的控制器:
get 'pages#download_report' => 'pages#report_page'
post 'pages#download_report', action: :download_report, controller: 'pages'
在Pages控制器中,download_report方法为:
def download_report
Prawn::Document.generate("hello.pdf") do
text "Hello World!"
end
send_data("hello.pdf", filename: "hello.pdf", type: 'application/pdf')
end
服务器在开发中运行良好,使用按钮没有错误。已发送PDF,并且我可以“打开”它,但是PDF无法加载,并且无法在我尝试过的任何PDF阅读器中打开,包括Microsoft Edge和Adobe Acrobat Reader。我对为什么会发生此错误感到困惑,因为看起来这个基本测试应该可以工作。我对Ruby on Rails还是比较陌生,因此如果它是一个基本错误,我不会感到惊讶,但是这并不是我容易看到的错误。任何帮助或建议,我们感激不尽。
感谢任何提前响应的人!如果您要我提供更多信息来帮助诊断问题,请告诉我。
答案 0 :(得分:0)
我在项目中经常使用大虾,这是我遵循的配置。到目前为止,还没有遇到任何问题。
send_data your_file.render, filename: filename, type: "application/pdf"
答案 1 :(得分:0)
将send_data
更改为send_file
:
def download_report
Prawn::Document.generate("hello.pdf") do
text "Hello World!"
end
send_file "hello.pdf",type: 'application/pdf'
end