通常はビューをメールの本文として送信したいと思います。
これを行う最も簡単な方法は何ですか?
例: pages/reports.html.erb があり、そのパスにアクセスした場合に表示されるページをメールの本文として送信したいと考えています。
レンダリングされた html を取得してメールの body 変数に割り当てる方法はありますか?
また、添付ファイルとして PDF バージョンを含めたいと思います。(私はwicked_pdfを使用しています)
def reports
@email = params[:email]
#something here?
respond_to do |format|
format.html
format.pdf do
render :pdf => "usage_report"
end
end
end
注:DBにはmongoid 2でrails 3.1を使用し、それが役立つ場合はherokuでsendgridを使用しています
編集:私がやったこと:
ここで #something を置き換えますか? と:
email_obj = {}
email_obj.to = params[:email]
email_obj.from = 'reports@company.com'
email_obj.subject = 'Report'
email_obj.body = render_to_string(:template => "pages/reports", :layout => false)
ReportsMailer.deliver_report(email_obj).deliver
そしてメーラークラス mailers/reports_mailer.rb
class ReportsMailer < ActionMailer::Base
default from: "from@example.com"
def deliver_report(email)
@email = email
mail( :to => @email.to,
:subject => @email.subject,
:from => @email.from)
end
end
そして、reports_mailer/deliver_report.html.erb で
<%= render :inline => @email.body %>