У меня есть user_mailer с макетом.
Для одного из моих методов actionmailer я хочу, чтобы почтовик НЕ использовал макет по умолчанию Но я не вижу, чтобы найти настройки для No Layout.
Есть идеи?
Просто укажите в своей почтовой программе:
layout false
Вы также можете добавить :only => my_action (или :except), чтобы ограничить методы, к которым он применяется, например:
:only => my_action
:except
layout false, :only => 'email_method_no_layout'
( соответствующая документация API )
Я сделал это с помощью небольшой функции, посмотрев на имя действия и вернув правильную используемую схему почтовой программы:
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