Ruby on rails Prawn PDF与Rails mailer?

Ruby on rails Prawn PDF与Rails mailer?,ruby-on-rails,email,pdf,prawn,Ruby On Rails,Email,Pdf,Prawn,我已经成功创建了一封电子邮件,在创建Kase时发送,但现在我需要附上一份由Prawn和Prawno动态创建的PDF。基本上,当您访问一个kase(如application.com/kase/1)时,您只需在URL后面附加.pdf,即application.com/kase/1 我花了很长时间让PDF正常工作,并查看了我想要的效果,但我不知道如何将PDF添加到自动发送的电子邮件中-主要是因为我不知道如何在自动生成的过程中为其提供链接 有没有人能让它工作起来 谢谢 Danny我想如果您将生成的pdf

我已经成功创建了一封电子邮件,在创建Kase时发送,但现在我需要附上一份由Prawn和Prawno动态创建的PDF。基本上,当您访问一个kase(如application.com/kase/1)时,您只需在URL后面附加.pdf,即application.com/kase/1

我花了很长时间让PDF正常工作,并查看了我想要的效果,但我不知道如何将PDF添加到自动发送的电子邮件中-主要是因为我不知道如何在自动生成的过程中为其提供链接

有没有人能让它工作起来

谢谢


Danny

我想如果您将生成的pdf存储在某个地方会更好—用于缓存等目的。 但使用当前配置,您可以使用
Net::HTTP
读取生成的页面并附加响应:

require 'net/http'

def your_mailer_method(record)
  #...
  attachment "application/pdf" do |a|
    a.body = Net::HTTP.get('yourdomain.com', "/kase/#{record.id}.pdf")
    a.filename="your_pdf_name.pdf"
  end  
end

你真的应该考虑不要使用虾,创造一个对虾的子类::做你需要的文件。然后,在控制器和邮件程序代码中,它应该是:

MyReport.new.render

请参阅有关此的对虾文档:


对于较新的,您实际上不需要再次发送请求,如果可以的话:

mail.attachments["invoice.pdf"] = {:mime_type => "application/pdf" , :content => pdf_generator}
而不是这样做:

send_data pdf.render , :filename => file_name_here , :type => "application/pdf"
就这么做吧:

pdf.render , :filename => file_name_here , :type => "application/pdf"
不要
发送数据
,只需在电子邮件附件中呈现pdf,如第一段所述

事实上,我刚刚在github上写了一个要点。

这段代码适合我

def send_file(file, subject, text, to_email)
      @subject = subject
      @text = text
      attachments["#{invoice.invoice_number}.pdf"] = file
      from_email = abc@xyz.com      
mail(:to => to_email, :from => from_email, :subject=> subject)
  end

这是我不明白的地方。这里有/kase/1.psd,数字1是kase ID,每次都会改变。有办法解决这个问题吗?将您的记录作为参数传递给mailer方法并使用它的id。请参阅编辑的答案。