更改邮件发送器中的布局方法

11

我如何在mailer中的方法中更改电子邮件的整体布局?

实质上尝试做到这一点:

class AccountMailer < ActionMailer::Base
  layout 'mailer'

  def reset_password(user)
    layout 'simple_mailer'
  end
end

但是会抛出错误。

基本上,我在/app/views/layouts/simple_mailer.html.erb中有一个布局,我想在那个方法中使用它,但只限于那个方法。

我正在运行Rails 4.2。

3个回答

14
< p > mail 方法可以接受一个块,该块会传入一个格式化对象。 < /p >
class MyMailer < ApplicationMailer
  layout 'mailer'
  def password_reset(user)
   # uses the "mailer" layout
  end

  def special
    mail(to: "whomever") do |format|
      format.html { render(layout: false) } # no layout is used
      format.text # use the special.text.erb like normal
    end
  end
end

4
这篇文章回答了你的问题。只需在render方法中指定:layout选项即可。

2
你可以将其他选项传递给mail块,并指定要使用哪个布局,如下所示:
  class AccountMailer < ActionMailer::Base
    layout 'mailer'

    def reset_password(user)
      mail(to: 'test@gmail.com', subject: 'Sample Mail', from: "<test@gmail.com>") do |format|
        format.html { render layout: 'path_to/other_mailer_layout' }
      end
    end  
  end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接