wicked_pdf で Rails が送信するメールに PDF を添付する
表題の件ですが、案外はまってしまったので備忘録。
メーラーの準備
元々のコードがこうだったとして
class NotifyMailer < ActionMailer::Base def customer(mail_object, document) @mail_object = mail_object @document = document mail from: @mail_object.from, to: @mail_object.to, subject: @mail_object.title end end
ファイルの添付は次のように行います。
class NotifyMailer < ActionMailer::Base def customer(mail_object, document) @mail_object = mail_object @document = document # ここから attachments["#{@document.title}.pdf"] = WickedPdf.new.pdf_from_string( render_to_string pdf: "#{@document.title}.pdf", template: 'documents/show.pdf.erb', no_background: false ) # ここまで mail from: @mail_object.from, to: @mail_object.to, subject: @mail_object.title end end
no_background オプションは背景画像を表示したい場合に指定してください。
また、ヘルパーメソッドを使いたい時は
add_template_helper ApplicationHelper
を追加するのを忘れないようにします。