Получение неопределенного метода `view_paths = 'для #Вы имеете в виду? Ошибка view_paths при использовании PDFKit в Rails - PullRequest
0 голосов
/ 10 октября 2019

Я использую PDFKit (вместе с Gem render_anywhere и wkhtmltopdf-binary), чтобы создать кнопку для создания PDF из HTML в Rails. Я следовал за несколькими уроками, которые оба используют «счета» в качестве примера. Мое приложение использует «ревизии». Я думал, что следил за всем, но получил ошибку в объекте ActionView :: LookupContext: undefined method 'view_paths=' for #<ActionView::LookupContext:0x00007fdb191d6cc0> Did you mean? view_path. Это связано с неправильным путем и использованием класса обслуживания в Rails, но, похоже, не может найти решение. Вот мой код для создания PDF:

Gem PDFKit: https://github.com/pdfkit/pdfkit

Учебное пособие, которое я использую: https://code.tutsplus.com/tutorials/generating-pdfs-from-html-with-rails--cms-22918

downloads_controller:

class DownloadsController < ApplicationController


   def show
    respond_to do |format|
      format.pdf { send_audit_pdf }
    end
  end

  private

  def audit_pdf
    audit = params[:incoming]
    AuditPdf.new(audit)
  end

  def send_audit_pdf
    send_file audit_pdf.to_pdf,
      filename: audit_pdf.filename,
      type: "application/pdf",
      disposition: "inline"
  end

end

Модель Download:

require "render_anywhere"

class Download 
  include RenderAnywhere

  def initialize(audit)
    @audit = audit
  end

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

  def filename
    "audit #{audit.id}.pdf"
  end

  private

    attr_reader :audit

    def as_html
      render template: "audits/pdf", layout: "audit_pdf", locals: { audit: audit }
    end
end



Мой views/layout/audit_pdf.html.erb выглядит так:

<!DOCTYPE html>
<html>
<head>
  <title>Audit PDF</title>
  <style>
    <%= Rails.application.assets.find_asset('audit.pdf').to_s %>
  </style>
</head>
<body>
  <%= yield %>
</body>
</html>
...