Ответ 1
Просто укажите в своей почтовой программе:
layout false
Вы также можете добавить :only => my_action
(или :except
), чтобы ограничить методы, к которым он применяется, например:
layout false, :only => 'email_method_no_layout'
У меня есть user_mailer с макетом.
Для одного из моих методов actionmailer я хочу, чтобы почтовая программа НЕ использовала макет по умолчанию. Но я не вижу, чтобы найти настройку No Layout.
Любые идеи?
Просто укажите в своей почтовой программе:
layout false
Вы также можете добавить :only => my_action
(или :except
), чтобы ограничить методы, к которым он применяется, например:
layout false, :only => 'email_method_no_layout'
Я сделал это, используя небольшую функцию, глядя на имя действия и вернув правильный макет почтовой программы, который будет использоваться:
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
Метод макета может принять имя метода; используйте этот метод, чтобы определить, показывать ли макет и вернуть это имя или false.
layout :choose_layout
...
private
def choose_layout
if something
return false
else
return 'application'
end
end
Вы также можете быть очень отрывочным и сделать это перед вызовом mail() в конце конкретного действия почтовой программы:
@_action_has_layout = false