我想发送通常作为电子邮件正文的视图.
这是最简单的方法吗?
例如:我有pages / reports.html.erb,如果您访问该路径作为电子邮件正文,我想发送您看到的页面.
有没有办法获取渲染的html并将其分配给电子邮件的正文变量?
另外,我想将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
注意:如果有帮助的话,我正在使用带有mongoid 2的rails 3.1用于DB和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 %>
最佳答案 rails邮件程序视图通过邮件程序的名称存储在视图中的子文件夹中,就像控制器视图一样.很难说这是否完全可以让你不知道该方法的视图/控制器是什么样的,但你可以做的是为该页面渲染并将其转换为
partial,然后你可以在控制器视图和
mailer view如下:
给出部分:_my_partial.html.erb
在意见内:
render "my_partial"
使用partial,你甚至可以通过以下方式传递视图渲染所需的任何变量:
render "my_partial", :variable => variable
更新:
这也可能是有意义的:Rendering a Rails view to string for email