在ActionMailer中使用Rails 3 Render Prawn pdf

如何在ActionMailer中将prawn pdf渲染为附件? 我使用delayed_job并且不明白,我怎么能在动作邮件程序中渲染pdf文件(不在控制器中)。 我应该使用什么格式?

您只需要告诉Prawn将PDF呈现为字符串,然后将其添加为电子邮件的附件。 有关附件的详细信息,请参阅ActionMailer文档 。

这是一个例子:

class ReportPdf def initialize(report) @report = report end def render doc = Prawn::Document.new # Draw some stuff... doc.draw_text @report.title, :at => [100, 100], :size => 32 # Return the PDF, rendered to a string doc.render end end class MyPdfMailer < ActionMailer::Base def report(report_id, recipient_email) report = Report.find(report_id) report_pdf_view = ReportPdf.new(report) report_pdf_content = report_pdf_view.render() attachments['report.pdf'] = { mime_type: 'application/pdf', content: report_pdf_content } mail(:to => recipient_email, :subject => "Your report is attached") end end 

我跟着RailsCasts进行了PRAWN 。 采取已经说过的和我试图类似完成的内容,我设置了附件名称,然后创建了PDF。

InvoiceMailer:

  def invoice_email(invoice) @invoice = invoice @user = @invoice.user attachments["#{@invoice.id}.pdf"] = InvoicePdf.new(@invoice, view_context).render mail(:to => @invoice.user.email, :subject => "Invoice # #{@invoice.id}") end 

我的解决方案

 render_to_string('invoices/show.pdf', :type => :prawn) 

PDF已损坏,因为我没有写邮件function块和多部分电子邮件不正确。

Interesting Posts