2016-04-06 11 views
0

Sendgridテンプレートを使用して、自分のサイトにサインアップするときにユーザーに自分のウェルカムメールを送信したいと思います。私はチェックアウトしました:Devise's How-to Use customer mailerそして既に最初のいくつかのステップを実行しましたが、私はいくつかのカスタム情報と代入変数を渡すことができる必要があるので、confirmation_instructionsメソッドをどこに置くべきかに固執しています。Sendgridを使用してカスタムメーラーを作成する

カスタムクラス::モデル/ devise_mailer.rb

class DeviseMailer < Devise::Mailer 
    helper :application 
    include Devise::Controllers::UrlHelpers 
    default template_path: 'devise/mailer' 
end 

設定/初期化子/考案私も、これは私がこれまで持っているものである工夫生成コントローラcontrollers/users/...

を使用しています。 RB

が追加さ:config.mailer = "DeviseMailer"

ここから、私は以下のようなことをやろうとしていますが、どこに置くべきか分かりません。カスタムコントローラを作る必要はありますか?もしそうなら、どうすれば新しいユーザー登録でこの方法を使うのですか?:

def confirmation_instructions(record, token, opts={}) 
    headers["Custom-header"] = "Bar" 
    super 
end 

私はここでオフですか? (変更方法注)

class DeviseMailer < Devise::Mailer 
    helper :application 
    include Devise::Controllers::UrlHelpers 
    default template_path: 'devise/mailer' 

    def self.confirmation_instructions(record, token, opts={}) 
    new(:confirmation_instructions, record, token, opts) 
    end 
end 

をそしてあなたが好きな場所。このような任意のコントローラからそれを呼び出す:

答えて

1

それをここに入れて

current_user.send_confirmation_instructions 
+0

[OK]を、それは理にかなっています。..奇妙なことに、私の開発登録コントローラーには 'def create'メソッドがありません。だから、ユーザーがサインアップするとき、それを駆動するのは何ですか?コントローラは別の場所にあるか、または別の場所のデベロッパスクリプトにバックアップされていますか? – Godzilla74

+0

@ Godzilla74登録コントローラは、Devise自身にあります。私たちは、Deviseにある基本機能をオーバーライドしたい場合にのみ、別の 'registration_controller.rb'ファイルを生成します。あなた自身でそれを見るのは少し難しく、それ以外の場合はDeviseを掘り下げますが、多くのユーザーは既にこれを行っています。そのため、さまざまなリソースが何かを行う方法を伝えています。 – Aleks

関連する問題