Rails 3 -Render PDF from view and attach to email

后端 未结 2 1164
一生所求
一生所求 2020-12-28 16:33

I have been using Wicked_pdf to render a view as a PDF and actionmailer to send emails, but I can\'t get them to work together. I want to attach a PDF version of a certain v

2条回答
  •  情话喂你
    2020-12-28 16:48

    2 good ways to do this the way you want:

    1: Create the pdf in the controller, then send that to the email as a param.

    # controller
    def sendemail
      @user = User.find(params[:id])
      pdf = render_to_string :pdf => 'MyPDF'
      Sendpdf.send_report(@user, pdf).deliver
      redirect_to user_path(@user)
      flash[:notice] = 'Email has been sent!'
    end
    
    # mailer
    def send_report(user, pdf)
      @user = user
      attachments['MyPDF.pdf'] = pdf
      mail(:to => user.email, :subject => "awesome pdf, check it")
    end
    

    2: Create the pdf in the mailer directly (a little more involved, but can be called from a model)

    def send_report(user)
      @user = user
      mail(:to => user.email, :subject => "awesome pdf, check it") do |format|
        format.text # renders send_report.text.erb for body of email
        format.pdf do
          attachments['MyPDF.pdf'] = WickedPdf.new.pdf_from_string(
            render_to_string(:pdf => 'MyPDF',:template => 'reports/show.pdf.erb')
          )
        end
      end
    end
    

提交回复
热议问题