Rails for ActionMailer - Cómo deshabilitar un Layout para un determinado correo


Tengo un user_mailer con un layout.

Para uno de mis métodos actionmailer quiero que el correo NO use el diseño predeterminado. Pero no puedo ver para encontrar un ajuste para Ningún Diseño.

¿Alguna idea?

Author: AnApprentice, 2011-03-07

4 answers

Simplemente especifique en su anuncio de correo:

layout false

También puede agregar :only => my_action (o :except) para limitar los métodos a los que se aplica, de la siguiente manera:

layout false, :only => 'email_method_no_layout'

(documentación API aplicable )

 38
Author: Andrew Marshall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-27 08:27:55

El método layout puede aceptar el nombre de un método; use el método para determinar si mostrar un layout y devolver ese nombre o false.

layout :choose_layout
...

private
def choose_layout
  if something
    return false
  else
    return 'application'
  end
end
 3
Author: DGM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-07 01:57:57

Lo hice usando una pequeña función, mirando el nombre de la acción y devolviendo el diseño de correo correcto a usar:

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
Author: pastullo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-20 12:15:37

También podría ser muy incompleto y hacer esto antes de la llamada a mail( ) al final de la acción de correo específica:

@_action_has_layout = false
 1
Author: GigaBass,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-12 16:09:04