2010-07-14 112 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"