Ruby on Rails: Prawn Gem создает PDF, но не может отобразить PDF - PullRequest
0 голосов
/ 01 октября 2018

Я использую 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 голосов
/ 02 октября 2018

Изменить 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 
0 голосов
/ 01 октября 2018

Я часто использую креветки в своем проекте, и это конфигурация, которой я следую.До сих пор не сталкивался с какими-либо проблемами.

send_data your_file.render, filename: filename, type: "application/pdf"
...