Просто короткое замечание, прежде чем я получу фактический ответ: похоже, вы передаете полный URL (report_url(@report)
) на PDFKit.new
, что является пустой тратой - это означает, что PDFKit должен сделать запрос к веб-серверу, который, в свою очередь, должен пройти через маршрутизатор Rails и т. д. вниз по линии, чтобы получить содержимое страницы. Вместо этого вы должны просто отобразить страницу в вашем контроллере с помощью render_to_string
и передать ее PDFKit.new
, так как она будет принимать строку HTML. Помня об этом ...
Это описано в разделе «Использование» README PDFKit . Вы бы сделали что-то вроде этого:
def show
@report = Report.find(params[:id])
kit = PDFKit.new render_to_string(@report) # pass any options that the
pdf_file = kit.to_file '/some/file/path.pdf' # renderer needs here (same
# options as `render`).
# and if you still want to send it to the browser...
respond_to do |format|
format.pdf { render :file => pdf_file.path }
end
end