Подтвердить что ты не робот

Rails для ActionMailer - как отключить макет для определенной почтовой программы

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

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

Любые идеи?

4b9b3361

Ответ 1

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

layout false

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

layout false, :only => 'email_method_no_layout'

(применимая документация API)

Ответ 2

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

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() в конце конкретного действия почтовой программы:

@_action_has_layout = false