Rails 3.0 と PDFKit を使用しています。SASS と HAML ですが、アセット パイプラインはまだ実装していません。
コントローラーから呼び出しを行うと、render_to_string :show を渡して PDFKit.new を呼び出し、画像を含む完全なスタイルの pdf を生成できます。しかし、rake タスクを使用して同じことを行うと、PDF はスタイルなしで生成され、image_tag ヘルパーは次のようなエラーをスローします。
can't convert nil into String
確かに、私はレーキタスクで何か間違ったことをしています...しかし、すべてがコントローラーで機能します...何が欠けていますか? rake タスクに何かを含める必要がありますか? それとも、インライン スタイルと絶対パスで別のビューを使用しますか? 呼び出しは次のとおりです。
コントローラーバージョン
def generate_html_invoice
render_to_string :show, layout: 'mypdflayout'
end
mypdf = PDFKit.new html_generator
RAKE タスク バージョン
def generate_html_invoice
invoice_view = ActionView::Base.new(MyWeb::Application.config.paths["app/views"].first)
invoice_view.assign({ ....... various params here})
html_invoice = invoice_view.render(template: "invoices/show", layout: 'mypdflayout')
return html_invoice
mypdf = PDFKit.new html_generator
image_tag
同じエラーがヘルパーとstylesheet_link_tag
ヘルパーによってスローされます
別の方法は、rake タスクでコントローラーをインスタンス化することですが、それは可能ですか? そして、それは良い習慣ですか?