【Rails・Devise】独自で作成したhelper_methodをDeviseのMailerで使う方法
以下のようなhelperを作成していたとして、それをdeviseのMailerのview(メール文面)で使いたいとします。
app/helpers/hoge_helper.rb
module HogeHelper
def hoge
"hoge" # hogeと表示するメソッド
end
end
方針としてはまず以下のような形で、Devise::Mailerクラスを継承した独自のMailerクラスを作成します。
app/mailers/my_mailer.rb
class MyMailer < Devise::Mailer
helper :hogehelper # ここでhogehelperを読み込む
include Devise::Controllers::UrlHelpers # もしUrlのヘルパーを使いたければこちらも記載
default template_path: 'devise/mailer' #デフォルトではmy_mailerという配下に設定されてしまうので、helpler使用する場所を指定
end
続いて、作成した独自のMailerクラス(今回はMyMailer)をDeviseのMailerとして設定します。
config/initializers/devise.rb
config.mailer = "MyMailer"※全てのモジュールでこのMailerが使われるようになります。
これで、mailerのview(メール文面)にて、helperメソッドが使用できるようになります。
確認するために、以下のような形で、mailerの中のファイルにhelperメソッドを使用してみてください。
※今回はhogehelperの内容が使用可能。読み込むものはaplication_helperでも何でもOK。
app/views/users/mailer/email_changed.html.erb
<%= hoge %> #hogeと表示される。helperメソッドが使用できるようになっている