2011-03-07 51 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 
相關問題