1

所以我有一个布局2点邮件的操作:signup_emailchange_password轨道3负载不同的谐音

def signup_email(user, url) 
    @user = user 
    @url = url 
    mail(to:user.username, subject:"Welcome to Clubicity!", template_path: "mail_templates", template_name: "system") 
    end 

    def change_password(username,url) 
    @url = url 
    mail(to:username,subject:"Clubicity - password recovery", template_path: "mail_templates", template_name: "system") 
    end 

我设法获得这2个动作的一个布局,但是现在在这个布局我需要渲染2个不同的部分,取决于什么动作被称为,注册或change_pwd ..

我看过RailsGuides和api.rubyonrails.org,他们只说模板。

请帮助这个。

回答

1

得到它使用邮件的布局像这样

def change_password(username,url) 
    @url = url 
    mail(to:username,subject:"Clubicity - password recovery") do |format| 
     format.html { render :layout => 'mail_templates/system'} 
    end 
    end 

    def signup_email(user, url) 
    @user = user 
    @url = url 
    mail(to:user.username, subject:"Welcome to Clubicity!") do |format| 
     format.html { render :layout => 'mail_templates/system'} 
    end 
    end 

,并在布局只是把<%=%的收率>

和摇滚!

+0

因此,对于第一个操作,您的邮件布局是app/views/layouts/mail_templates/system.html.erb, 您的邮件视图是app/views/user_mailer/change_password.html.erb? – alex

+0

正好..所以我有一个完整的模板和邮件视图加载到此布局..除了change_password的路径不是views/user_mailer /但意见/邮件/ change_password.html.erb – rmagnum2002

+0

谢谢,将使用您的方法: ) 只需更正<% yield %>至<%= yield %>即可。 – alex

0

所以,你想使用一个文件进行不同的操作。当然你必须在模板中定义动作。

我建议为每个动作制作一个视图文件。

对于使用一种布局,只需将<%= render 'email_header' %>添加到顶部,并将<%= render 'email_footer' %>添加到每个视图的底部。也可以用适当的标记使_email_header.html.erb_email_footer.html.erb

+0

对我来说看起来不太合适......我会等待另一个答案,如果没有其他解决方案,我将不得不按照自己的方式来完成。谢谢你的任何方式。 – rmagnum2002