私は以下のチュートリアルに続き、完全な完全なアプリケーションを構築しました。エラー「初期化されていない定数登録」ユーザー自己登録とCancan super_admin登録ユーザーのためのDeviseを使用
http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/ http://www.tonyamoyal.com/2010/09/29/rails-authentication-with-devise-and-cancan-part-2-restful-resources-for-administrators/comment-page- 2 /#comment-879
私は最後まで問題に遭遇するまで、すべてがうまくいきます。
問題は、super_adminユーザーが新しいユーザーを作成しようとしたときです。
Started POST "/users" for 127.0.0.1 at 2012-03-09 23:37:51 -0500
Processing by RegistrationsController#create as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"c8v6fmCFSlJV2v9qClxD46c1wcBU7n78Mk9xWsJm/Ls=", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "customer_attributes"=>{"first_name"=>"test", "last_name"=>"doe"}, "role_ids"=>["", "3"]}, "commit"=>"Sign up"}
Completed in 9ms
NameError(初期化されていない一定の登録)::私は考え出しできること は、ルートの競合である私はエラーを得ました。チュートリアル#1は、新しいユーザを登録するためにdeviseカスタム登録コントローラを使用します。 tut#2は、super_adminによって新しいユーザーを作成する別の方法を追加しました。以下はルートリストです。
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"registrations"}
new_user_registration GET /users/register(.:format) {:action=>"new", :controller=>"registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"registrations"}
PUT /users(.:format) {:action=>"update", :controller=>"registrations"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"registrations"}
user_confirmation POST /users/confirmation(.:format) {:action=>"create", :controller=>"devise/confirmations"}
new_user_confirmation GET /users/confirmation/new(.:format) {:action=>"new", :controller=>"devise/confirmations"}
GET /users/confirmation(.:format) {:action=>"show", :controller=>"devise/confirmations"}
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
注意:一致するhttp動詞Post/usersとuser_registrationsパスが最初に一致しました。
POST /users(.:format) {:action=>"create", :controller=>"users"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"registrations"}
しかし、この競合を避ける最も良い方法はわかりません。あなたはこれについていくつかの光を当てることができますか?私はあなたのチュートリアルから理解できませんでした。ルートの競合を避けるため、事前に
おかげで、
ジョージ