当我尝试为使用Wicked PDF附加到电子邮件的pdf指定布局时,我无法收到生成的电子邮件。这是一个rails 4 app。
当我使用以下代码时,应用程序成功发送带有pdf附件的电子邮件,但没有所需的样式:
def invoice_created(invoice_id)
@invoice = Invoice.find(invoice_id)
@subscription = Subscription.find(@invoice.subscription_id)
attachments['invoice.pdf'] = WickedPdf.new.pdf_from_string(
render_to_string(:pdf => "invoice", :template => 'invoices/show.pdf.erb'))
mail(to: 'you@example.com', subject: "Your Invoice is Ready")
end
但是当我添加布局时,什么都没有生成。
def invoice_created(invoice_id)
@invoice = Invoice.find(invoice_id)
@subscription = Subscription.find(@invoice.subscription_id)
attachments['invoice.pdf'] = WickedPdf.new.pdf_from_string(
render_to_string(:pdf => "invoice",
:template => 'invoices/show.pdf.erb',
:layout => 'pdf.html.erb'))
mail(to: 'you@example.com', subject: "Your Invoice is Ready")
end
在我的控制器中,我在浏览器中显示pdf并正确使用pdf.html.erb布局:
def show
@invoice = current_account.invoices.find(params[:id])
respond_to do |format|
format.html
format.pdf do
render :pdf => 'file_name',
:template => 'invoices/show.pdf.erb',
:layout => 'pdf.html.erb'
end
end
end
我没有在开发日志中看到任何明显的错误,除了没有创建电子邮件文件。
我看到以下情况,所以看起来它看到了布局,但不会显示它。
Rendered invoices/show.pdf.erb within layouts/pdf.html.erb (13.7ms)
布局是否存在冲突问题?
如果我尝试使用指定的布局生成多个电子邮件,请从邮件程序中删除布局代码,重新启动服务器,请求新电子邮件,然后发送我之前请求的电子邮件。
我尝试添加
:show_as_html => params[:debug].present?
邮寄给邮件,看看它是否会散发一些光线,但这也导致电子邮件无法发送。
答案 0 :(得分:3)
问题代码是pdf布局:
<%= csrf_meta_tags %>
我不知道为什么我的应用中没有收到任何错误消息。我已将我的应用程序设置为显示gem 'better_errors'
的错误,但未显示任何错误。我设置了一个新的应用程序,只是为了使用wicked_pdf,但没有将better_errors添加到gem文件中。
现在我收到以下错误消息:
undefined method `protect_against_forgery?'
从layouts/pdf/html.erb
文件中移除此行后,该应用正确附加了样式化的pdf。
以下是我用过的示例wicked_pdf示例的链接:https://github.com/stevejc/WickedPDF-Example