我有一个带布局的user_mailer。ActionMailer的Rails - 如何禁用特定邮件的布局
对于我的一个actionmailer方法,我希望邮件程序不要使用默认布局。但我看不到没有布局的设置。
任何想法?
我有一个带布局的user_mailer。ActionMailer的Rails - 如何禁用特定邮件的布局
对于我的一个actionmailer方法,我希望邮件程序不要使用默认布局。但我看不到没有布局的设置。
任何想法?
在你的邮件只需指定:
layout false
您还可以追加:only => my_action
(或:except
),以限制它适用于方法,像这样:
layout false, :only => 'email_method_no_layout'
布局方法可以接受方法的名称;使用该方法确定是否显示布局并返回该名称或为false。
layout :choose_layout
...
private
def choose_layout
if something
return false
else
return 'application'
end
end
我如何知道要执行的邮件/方法? – 2014-10-26 18:17:43
你也可以是非常粗略的,并在特定邮件动作的结束,而不是邮件()调用之前做到这一点:
@_action_has_layout = false
我做到了,用一个小功能,在看操作名称并返回正确的邮件布局使用:
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
安德鲁,谢谢,但我想这一个邮件,而不是所有。当我有类似def XXX的邮件(:to => ....)结束时,这将会发生在哪里 – AnApprentice 2011-03-07 01:21:18
查看更新后的答案。在API中总是有更多的细节。 – 2011-03-07 01:24:55
不幸'布局'my_layout',除了:'行动'不适合我。我必须使用'mail([...])do | format | format.text {render layout:nil}} end'。 – 2014-08-19 07:08:12