我有一个带布局的user_mailer。
对于我的一个动作管理器方法,我希望邮件程序不使用默认布局。但我看不到找到No Layout的设置。
有什么想法吗?
答案 0 :(得分:39)
只需在邮件中指定:
layout false
您还可以附加:only => my_action
(或:except
)来限制其适用的方法,如下所示:
layout false, :only => 'email_method_no_layout'
答案 1 :(得分:3)
布局方法可以接受方法的名称;使用该方法确定是否显示布局并返回该名称或为false。
layout :choose_layout
...
private
def choose_layout
if something
return false
else
return 'application'
end
end
答案 2 :(得分:3)
我是通过使用一个小函数来做的,查看动作名称并返回要使用的正确邮件程序布局:
class TransactionMailer < ApplicationMailer
layout :select_layout
def confirmation_email contact
#code
end
private
def select_layout
if action_name == 'confirmation_email'
false
else
'mailer'
end
end
end
答案 3 :(得分:1)
您也可以非常粗略,并在特定邮件程序操作结束时调用mail()之前执行此操作:
@_action_has_layout = false