2010-07-14 66 views
0

我想添加选项来注册JSON格式和一些其他特定的东西到我的应用程序。我试着将我自己的RegistrationsController控制器,然后设置我的路线是这样的:如何覆盖Devise 1.1.rc2控制器?

devise_for :users, :path_names => { :sign_in => 'signin', :sign_out => 'signout', :sign_up => 'signup' } 
match 'signin', :to => 'devise/sessions#new', :as => "new_user_session" 
match 'signout', :to => 'devise/sessions#destroy', :as => "destroy_user_session" 
match 'signup(.:format)', :to => 'registrations#new', :as => "new_user_registration" 

RegistrationsController在app /控制器/ registrations_controller.rb看起来是这样的:

class RegistrationsController < Devise::RegistrationsController 
    prepend_view_path "app/views/devise" 
    def create 
    # My custom implementation 
    end 
end 

它总是抛出无论格式如下错误

AbstractController::ActionNotFound (AbstractController::ActionNotFound): 
/usr/local/Cellar/Gems/1.8/gems/devise-1.1.rc2/lib/devise/controllers/internal_helpers.rb:57:in `is_devise_resource?' 
... 

我甚至尝试添加注册控制器从git到app/controllers/devise/reg istrations_controller.rb并改变路线来指向那个,但那也行不通。任何人有想法?

回答

1

想通了!我试图重写注册控制器中的创建,但没有路由到它......愚蠢的错误。

devise_for :users, :path_names => { :sign_in => 'signin', :sign_out => 'signout', :sign_up => 'signup' }, :controllers => { :registrations => "registrations" } 
match 'signin', :to => 'devise/sessions#new', :as => "new_user_session" 
match 'signout', :to => 'devise/sessions#destroy', :as => "destroy_user_session" 
get 'signup', :to => 'registrations#new', :as => "new_user_registration" 
post 'signup(.:format)', :to => 'registrations#create', :as => "create_user_registration"