レイアウトと言うときは、単にビューを意味するのではなく、それらを生成します。私自身のすべてのメーラーでは、デフォルトのレイアウトを使用しています。SomeMailer.rbファイルで定義します
#some_mailer.rb
class SomeMailer < ActionMailer::Base
layout 'sometemplate'
Devise Mailer et al。のためにこれを行うことができる方法はありますか?
レイアウトと言うときは、単にビューを意味するのではなく、それらを生成します。私自身のすべてのメーラーでは、デフォルトのレイアウトを使用しています。SomeMailer.rbファイルで定義します
#some_mailer.rb
class SomeMailer < ActionMailer::Base
layout 'sometemplate'
Devise Mailer et al。のためにこれを行うことができる方法はありますか?
DeviseGithubwikiに答えが見つかりました。
役立つ読書。;-)
config.to_prepare do
Devise::Mailer.layout "simple" # simple.haml or simple.erb
Devise::Mailer.helper :mailer
end
Wikiページのリファレンスは次のとおりです。方法:カスタムレイアウトを作成する
devise.rb にはparent_mailerオプションもあります。たとえば、 deviseの外部でメールを送信するとします。デフォルトでは、このオプションはActionMailer::Baseに設定されていますが、すでにActionMailer::Baseから継承しているApplicationMailerがある場合は、parent_mailerをこれに変更して、すべてのレイアウトと構成を箱から出すことができます。
いずれにせよ、デバイスメーラーコントローラーで何も変更したくない場合は、これを使用してアプリケーションのレイアウトのレールフローを維持する方がはるかにクリーンです。
# devise.rb
config.parent_mailer = 'ApplicationMailer'
# application_mailer.rb
class ApplicationMailer < ActionMailer::Base
layout 'mailer'
end
# 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 サーバーを再起動してください。
Devise::Mailer クラスを再度開いてみてください:
class Devise::Mailer < ActionMailer::Base
layout 'sometemplate'
end