Как настроить devise для использования пользовательского макета электронной почты? - PullRequest
30 голосов
/ 15 февраля 2011

Когда я говорю макет, я имею в виду не просто представления, я создаю их. На всех моих собственных почтовых я использую макет по умолчанию. Который я определяю в файле SomeMailer.rb

#some_mailer.rb
class SomeMailer < ActionMailer::Base
  layout 'sometemplate'

Есть ли способ сделать это для Devise Mailer et al .?

Ответы [ 4 ]

55 голосов
/ 18 февраля 2011

Нашел ответ сидя в вики Devise Github,

Чтение, которое помогает.; -)

config.to_prepare do
  Devise::Mailer.layout "simple" # simple.haml or simple.erb
  Devise::Mailer.helper :mailer
end

Вот ссылка на страницу вики: Как: создать пользовательские макеты

19 голосов
/ 10 августа 2011
# Devise::Mailer inherits from ActionMailer::Base other mail will work fine.

## app/mailers/deviser_mailer.rb

class DeviseMailer < Devise::Mailer
  layout 'email'
  default from: I18n.t("mailer.default.from")
end

## then in config/initializer/devise.rb

# Configure the class responsible to send e-mails.
config.mailer = "DeviseMailer"

Обязательно перезапустите сервер rails, когда вы изменили инициализатор.

11 голосов
/ 04 апреля 2017

Существует также опция parent_mailer в devise.rb , скажем, вы отправляете электронные письма вне устройства, по умолчанию эта опция установлена ​​на ActionMailer :: Base, но если у вас есть ApplicationMailer , который уже наследуется от ActionMailer :: Base , вы можете изменить parent_mailer на это и получить все свои макеты и конфигурации из коробки.

В любом случае это намного удобнее, если вы не хотите, чтобы в ваших приложениях сохранялся поток макетов в приложениях, если вы этого не хотите.изменить что-либо в контроллере devise mailer.

# devise.rb
config.parent_mailer = 'ApplicationMailer'

# application_mailer.rb
class ApplicationMailer < ActionMailer::Base
    # if you need to add a helper module for example
    add_template_helper(EmailHelper)
    layout 'mailer'
end
0 голосов
/ 15 февраля 2011

Попробуйте открыть Devise :: Mailer class:

 class Devise::Mailer < ActionMailer::Base
   layout 'sometemplate'
 end
...