rails 3在邮件程序中加载不同的部分

时间:2012-10-04 09:43:53

标签: ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2 actionmailer

所以我有两个邮件操作的布局:signup_emailchange_password

  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个不同的部分,具体取决于调用的动作,注册或更改_pwd ..

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

请为此提供帮助。

2 个答案:

答案 0 :(得分: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

并在布局中放入<%= yield%>

and rock'n'roll!

答案 1 :(得分:0)

因此,您希望将一个文件用于不同的操作。当然,您必须在模板中定义操作。

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

要使用一个布局,只需在顶部添加<%= render 'email_header' %>,在每个视图的底部添加<%= render 'email_footer' %>即可。同时使用适当的标记_email_header.html.erb_email_footer.html.erb