У меня есть кнопка «скачать» на веб-интерфейсе (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>