0

パスワードのリセット命令を送信する ApplicationController から継承したコントローラーがあります。テンプレートを指定する方法はありますか?

@user=User.find_by_email(email);
if @user.nil?
  render :status=>404, :json=>{:message=>"User not found or email format is invalid."}
  return
else
  @user.devise_mailer.reset_password_instructions(@user).deliver
  render :status=>200, :json=>{:message=>"Reset password instructions have been sent."}
end

上記のスニペットでわかるように、@user.devise_mailer.reset_password_instructions(@user).deliver はパスワードのリセット手順を送信しますが、デフォルトのメール テンプレートを使用しますが、これは変更したくありません。別のテンプレートを作成し、それを使用するように指定する必要があります

4

1 に答える 1

0

次に、独自のメーラーを作成します。詳細については、http: //guides.rubyonrails.org/action_mailer_basics.htmlを参照してください。新しいメーラーを作成したら、コントローラーで、次の代わりに:

@user.devise_mailer.reset_password_instructions(@user).deliver

あなたは次のようなことをします:

YourMailer.reset_password_instructions(@user).deliver

メーラーで Devise の一部を再利用したい場合があります: そのための devise ソースをチェックしてください: https://github.com/plataformatec/devise/blob/master/lib/devise/mailers/helpers.rb

app/views/devise/mailer/reset_password_instructions.html.erb別の方法として、アプリケーション ディレクトリに名前の付いたファイルを配置して、devise テンプレートを再定義することもできます。もちろん、デバイス ソースに基づいて実装することもできます: https://github.com/plataformatec/devise/blob/master/app/views/devise/mailer/reset_password_instructions.html.erb

于 2012-05-24T11:02:50.013 に答える