37

レイアウトと言うときは、単にビューを意味するのではなく、それらを生成します。私自身のすべてのメーラーでは、デフォルトのレイアウトを使用しています。SomeMailer.rbファイルで定義します

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

Devise Mailer et al。のためにこれを行うことができる方法はありますか?

4

4 に答える 4

63

DeviseGithubwikiに答えが見つかりました。

役立つ読書。;-)

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

Wikiページのリファレンスは次のとおりです。方法:カスタムレイアウトを作成する

于 2011-02-18T01:17:28.430 に答える
33

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
于 2017-04-04T06:06:55.040 に答える
19
# 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 サーバーを再起動してください。

于 2011-08-10T18:11:21.183 に答える
-3

Devise::Mailer クラスを再度開いてみてください:

 class Devise::Mailer < ActionMailer::Base
   layout 'sometemplate'
 end
于 2011-02-15T19:55:14.067 に答える