我正在使用 rails 3.0 和 PDFKit。SASS 和 HAML,但我还没有实现资产管道。
如果我从控制器拨打电话,我可以生成带有图像的完美风格的 pdf,调用 PDFKit.new 传递 render_to_string :show。但是,如果我通过 rake 任务执行相同操作,我的 PDF 生成时没有样式,并且 image_tag 助手会抛出如下错误:
can't convert nil into String
当然,我在 rake 任务中做错了什么......但是控制器中的一切正常......我错过了什么?我应该在 rake 任务中包含一些内容吗?或者也许使用具有内联样式和绝对路径的另一个视图?这些电话是:
控制器版本
def generate_html_invoice
render_to_string :show, layout: 'mypdflayout'
end
mypdf = PDFKit.new html_generator
耙任务版本
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
helper 和stylesheet_link_tag
helper抛出相同的错误
另一种方法是在 rake 任务中实例化控制器,但是..有可能吗?而且,这是一个好习惯吗?