我一直在使用Wicked_pdf将 View 呈现为PDF格式,并使用actionmailer来发送电子邮件,但是我无法让它们协同工作。我想使用actionmailer将某个 View 的PDF版本附加到电子邮件,然后通过单击链接或按钮将其发送出去。我有一个link_to命令可以发送电子邮件。这是我的 Controller ,用于生成电子邮件:
def sendemail
@user = User.find(params[:id])
Sendpdf.send_report(@user).deliver
redirect_to user_path(@user)
flash[:notice] = 'Email has been sent!'
end
这是我的 Action 邮件程序中的内容:
class Sendpdf < ActionMailer::Base
default :from => "myemail@email.com"
def send_report(user)
@user = user
attachment "application/pdf" do |a|
a.body = #Something should go here, maybe WickedPDF.new.something?
a.filename = 'MyPDF'
end
mail(:to => user.email, :subject => "awesome pdf, check it")
end
end
我已经看到很多问题和答案,其中大多数是与Prawn有关的。似乎应该对此有一个简单的答案。有人可以帮忙吗?
更新,我很高兴能在下面的答案中将其用作替代选项。但是,我真的很想学习如何将 View 呈现为PDF并将其附加到我的电子邮件中。我愿意使用大虾或其他需要的东西。
最佳答案
有两种方法。
我不知道如何有效地做到这一点,因为我以前从未做到过。
这样,如果服务器上有很多下载pdf的负担,则可以将这些请求重定向到其他地方。简而言之,效率的范围很大。
第二种方法的示例代码(所提供的代码是使用PDFkit编写的,因此请相应地进行更改):
class PdfsController < ApplicationController
def pdf
respond_to do |format|
format.pdf { render :text => wickedPDF.new( Pdf.find(params[:id]).content ).to_pdf }
end
end
...
end
根据您的选择替换
Pdf.find(params[:id]).content
,并根据wickedPDF替换to_pdf
方法。然后,您只需像这样在电子邮件中传递pdf下载的链接
<%= link_to "Download", pdf_pdf_path(pdf, :format => "pdf") %>
或任何适用于wickedPDF的西装。
关于ruby-on-rails - Rails 3-从 View 中呈现PDF并附加到电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762583/