Ruby on Rails:Prawn Gem生成PDF,但无法显示PDF

时间:2018-10-01 17:35:37

标签: ruby-on-rails ruby pdf pdf-generation prawn

我一直在将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还是比较陌生,因此如果它是一个基本错误,我不会感到惊讶,但是这并不是我容易看到的错误。任何帮助或建议,我们感激不尽。

感谢任何提前响应的人!如果您要我提供更多信息来帮助诊断问题,请告诉我。

2 个答案:

答案 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