【Rails・Devise】独自で作成したhelperメソッドをdeviseのメール文面で使う方法

【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メソッドが使用できるようになっている

Leave a Reply

Your email address will not be published.

CAPTCHA