ruby-on-rails - Rails 3-从 View 中呈现PDF并附加到电子邮件

标签 ruby-on-rails ruby-on-rails-3 pdf-generation actionmailer wicked-pdf

我一直在使用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嵌入到您要发送的电子邮件中,这样,当用户从电子邮件中下载pdf时,就不会要求您为各自的 Controller 呈现新的pdf操作。
    我不知道如何有效地做到这一点,因为我以前从未做到过。
  • 或者,您只需在电子邮件中提供指向pdf的链接,当用户单击它时,现在将调用创建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/

    相关文章:

    ruby-on-rails - 在 Ruby on Rails 中设置日志记录级别

    pdf - 保存文本的 SVG 到 PDF 转换器

    iphone - 动态数据的 PDF 生成

    ruby-on-rails - Rails Active Record 多态嵌套资源导航

    ruby-on-rails - 在基于域的 Rails 中有条件地实现 HSTS、SSL 和安全 Cookie

    ruby-on-rails - 在 rescue_from 中使用什么异常类来捕获 422 错误?

    ruby-on-rails - Not Null in "count"or "find"function in rails

    ruby-on-rails - 在 PostgreSQL 中预先加载和分组

    ruby - Prawn PDF表格混合格式

    ruby-on-rails - Rails 访问模型中模块中的共享自定义验证