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