我有一個帶佈局的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