2017-02-03 8 views
1

私は私のスコープビューが 考案は、電子メールのビューをオーバーライドしない

をreset_password_instructions.html、私のdevise.rb

config.scoped_views = true 

それは開発に正常に動作し、独自の電子メールを送信しています。ただし、本番環境では、ユーザーが電子メールを受信すると、デバイスからデフォルトのテンプレートが送信されました。

これを実稼働環境で修正するにはどうすればよいですか?私は工夫を使用する場合

答えて

0

私はこれは私が自分のメール今

class MyMailer < Devise::Mailer 
    helper :application # gives access to all helpers defined within `application_helper`. 
    include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url` 
    default template_path: 'devise/mailer' # to make sure that your mailer uses the devise views 
end 

を送信するために何をすべきかである、あなたのconfig/initializers/devise.rbに、あなたは"MyMailer"config.mailerを設定することができます。

これで、他のメーラーと同じ方法でMyMailerを使用できるようになりました。余分なヘッダーを追加するために特定のメールをオーバーライドする場合は、メソッドをオーバーライドしてカスタムメソッドの最後にsuperを呼び出して、Deviseのデフォルト動作をトリガーすることができます。

あなたはまた、手動でオプションのハッシュを設定することにより、基本的なヘッダ(REPLY_TO、から、など)のいずれかをオーバーライドすることができます。

def confirmation_instructions(record, token, opts={}) 
    headers["Custom-header"] = "Bar" 
    opts[:from] = '[email protected]' 
    opts[:reply_to] = '[email protected]' 
    super 
end 

(ユーザーが自分の工夫のモデル名である場合)、プレビューを得るために:

# test/mailers/previews/my_mailer_preview.rb 
# Preview all emails at http://localhost:3000/rails/mailers/my_mailer 

class MyMailerPreview < ActionMailer::Preview 

    def confirmation_instructions 
    MyMailer.confirmation_instructions(User.first, "faketoken", {}) 
    end 

    def reset_password_instructions 
    MyMailer.reset_password_instructions(User.first, "faketoken", {}) 
    end 

    def unlock_instructions 
    MyMailer.unlock_instructions(User.first, "faketoken", {}) 
    end 
end 

私は、これは便利な:)

+0

良かったことを願っていますが、私は、アプリ/メーラー/ my_mailer.rb – pedroooo

+0

と設定config.mailer = "MyMailer" で作成して動作しますか? – pedroooo

+0

はい、それは計画です –

関連する問題