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
をそしてあなたが好きな場所。このような任意のコントローラからそれを呼び出す:
[OK]を、それは理にかなっています。..奇妙なことに、私の開発登録コントローラーには 'def create'メソッドがありません。だから、ユーザーがサインアップするとき、それを駆動するのは何ですか?コントローラは別の場所にあるか、または別の場所のデベロッパスクリプトにバックアップされていますか? – Godzilla74
@ Godzilla74登録コントローラは、Devise自身にあります。私たちは、Deviseにある基本機能をオーバーライドしたい場合にのみ、別の 'registration_controller.rb'ファイルを生成します。あなた自身でそれを見るのは少し難しく、それ以外の場合はDeviseを掘り下げますが、多くのユーザーは既にこれを行っています。そのため、さまざまなリソースが何かを行う方法を伝えています。 – Aleks