Rails для ActionMailer - Как отключить макет для определенного почтовика - PullRequest
24 голосов
/ 07 марта 2011

У меня есть user_mailer с макетом.

Для одного из моих методов actionmailer я хочу, чтобы почтовик НЕ использовал макет по умолчанию Но я не вижу, чтобы найти настройки для No Layout.

Есть идеи?

Ответы [ 4 ]

39 голосов
/ 07 марта 2011

Просто укажите в своей почтовой программе:

layout false

Вы также можете добавить :only => my_action (или :except), чтобы ограничить методы, к которым он применяется, например:

layout false, :only => 'email_method_no_layout'

( соответствующая документация API )

3 голосов
/ 20 ноября 2015

Я сделал это с помощью небольшой функции, посмотрев на имя действия и вернув правильную используемую схему почтовой программы:

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 голосов
/ 07 марта 2011

Метод макета может принимать имя метода;используйте метод, чтобы определить, показывать ли макет и возвращать ли это имя или false.

layout :choose_layout
...

private
def choose_layout
  if something
    return false
  else
    return 'application'
  end
end
1 голос
/ 12 февраля 2015

Вы также можете быть очень отрывочны и делать это до вызова mail () в конце определенного действия почтовой программы:

@_action_has_layout = false
...