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