0

デバイスのセットアップで非常に奇妙なことが起こっています。

私はdeviseでカスタム動作のために使用しているカスタム ConfirmationsController を持っています。

私の顧客モデル:

class Customer
include Mongoid::Document

after_create      :prepare_demo_app

devise :validatable,
       :registerable,
       :database_authenticatable,
       :confirmable,
       :trackable,
       :rememberable,
       :recoverable,
       :mailchimp

## Confirmable
field :confirmation_token,   :type => String
field :confirmed_at,         :type => Time
field :confirmation_sent_at, :type => Time

私のカスタムコントローラー

 class ConfirmationsController < Devise::ConfirmationsController
    def create
        puts "resource #{resource}"
        puts "resource name #{resource_name}"
        super
    end
enter code here

私のルート.rb

 devise_for :customers,
               :controllers => {:confirmations => "confirmations" },
               :skip => [:sessions, :passwords], :format => false do
               #... other gets and posts but nothing to do with confirmations 
               #...
    end

ルート ファイルに従ってこのコントローラーを押すと、電子メールが入力されます。[送信] をクリックして、リソースの null ポインターを取得します。ただし、リソース名ではありません。私が見逃している可能性があるもの、または顧客が null として通過する理由について何か考えている人はいますか?

4

1 に答える 1

0

resourceどこにも設定されていません。デフォルトConfirmationsControllerでは、Devise は次のように初期化しresourceます (実行しているバージョンによって異なります):

self.resource = resource_class.send_confirmation_instructions(resource_params)

ステートメントのsuper 前に置く場合は、設定する必要があります。putsresource

于 2012-11-16T18:24:26.380 に答える