如何在邮件程序中更改方法中电子邮件的整体布局?
尝试基本上这样做:
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。
答案 0 :(得分:7)
mail
方法可以采用传递格式对象的块。
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
答案 1 :(得分:3)
这个问题的article答案。只需在:layout
方法中指定render
选项。
答案 2 :(得分:0)
您可以将其他选项传递给邮件块并指定要使用的布局,如下所示:
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