Создание PDF из Rails Backend - PullRequest
       0

Создание PDF из Rails Backend

0 голосов
/ 18 октября 2019

У меня есть кнопка «скачать» на веб-интерфейсе (vue.js), которая достигает конечной точки /reports в моем приложении. В reports_controller я выбираю нужные данные, а затем пытаюсь создать новый отчет в формате PDF. В модели report я использую гем renderanywhere и pdfkit, чтобы попытаться получить PDF с данными, через которые я прохожу.

Я пытаюсь следовать документации / примеру на pdfkit, но создаваемый мной PDF-файл не включает нужные данные (я получаю только заголовок h3 и ничего больше),мой метод as_html правильный? Есть ли что-то, чего мне не хватает в шаблоне (pdf.html.erb)?

Есть ли другой способ / подход, который я могу попробовать?

reports_controller.rb

  def index
    send_report_pdf
  end

  private

  def report_pdf
    report = Thing.find(10)
    Report.new(report)
  end

  def send_report_pdf
    send_file report_pdf.to_pdf
  end

report.rb

require 'render_anywhere'

class Report
  include RenderAnywhere

  def initialize(report)
    @report = report
  end

  def to_pdf
    kit = PDFKit.new(as_html, page_size: 'A4')
    kit.to_file("#{Rails.root}/tmp/report.pdf")
  end


  private

  def as_html
    render template: "reports/pdf.html.erb",
    layout: "application",
    locals: { report: @report }
  end
end

pdf.html.erb

<div>
  <h1>Report Test</h1>

  <h3> <%= @report %> </h3>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...