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