2012-12-27 82 views
4

我想通常发送视图作为电子邮件的正文。以电子邮件的形式发送渲染的视图

最简单的方法是什么?

例如:我有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 

注:我使用的是轨道3.1 mongoid 2数据库,并在Heroku sendgrid是否有帮助

编辑:我最后什么了做:

替换#something在这里?用:

email_obj = {} 
email_obj.to = params[:email] 
email_obj.from = '[email protected]' 
email_obj.subject = 'Report' 
email_obj.body = render_to_string(:template => "pages/reports", :layout => false) 
ReportsMailer.deliver_report(email_obj).deliver 

和在所述邮件收发器类寄件人/ reports_mailer.rb

class ReportsMailer < ActionMailer::Base 
    default from: "[email protected]" 
    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 %> 

回答

2

导轨邮包视图都存储在一个通过邮件程序的名称查看子文件夹,就像控制器视图一样。很难说这是否完全适用于您,不知道该方法的视图/控制器是什么样的,但您可以做的是将该页面的渲染转换为partial,然后您可以在控制器视图和mailer view这样:给定

部分:_my_partial.html.erb

视图内

render "my_partial" 

使用部分甚至可以通过,这将是必要的任何变量的视图是对其进行渲染:

render "my_partial", :variable => variable 

更新: 这可能是利益,也:Rendering a Rails view to string for email

+0

好像我可以做一个呈现在控制器操作字符串,并发送包含电子邮件是主体数据,感谢指针 - 我明天会试试看看它是否有效。 –

相关问题