2011-03-07 78 views

回答

33

在你的邮件只需指定:

layout false 

您还可以追加:only => my_action(或:except),以限制它适用于方法,像这样:

layout false, :only => 'email_method_no_layout' 

applicable API documentation

+0

安德鲁,谢谢,但我想这一个邮件,而不是所有。当我有类似def XXX的邮件(:to => ....)结束时,这将会发生在哪里 – AnApprentice 2011-03-07 01:21:18

+0

查看更新后的答案。在API中总是有更多的细节。 – 2011-03-07 01:24:55

+5

不幸'布局'my_layout',除了:'行动'不适合我。我必须使用'mail([...])do | format | format.text {render layout:nil}} end'。 – 2014-08-19 07:08:12

2

布局方法可以接受方法的名称;使用该方法确定是否显示布局并返回该名称或为false。

layout :choose_layout 
... 

private 
def choose_layout 
    if something 
    return false 
    else 
    return 'application' 
    end 
end 
+0

我如何知道要执行的邮件/方法? – 2014-10-26 18:17:43

0

你也可以是非常粗略的,并在特定邮件动作的结束,而不是邮件()调用之前做到这一点:

@_action_has_layout = false 
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 
相关问题