2011-07-11 63 views
2

我读过类似的文章,如Override devise registrations controller,但在我的应用程序设计不能正确覆盖。覆盖Devise的问题:: RegistrationsController

我在Mac上使用Devise 1.4.2和Rails 3.0.9(OSX 10.6.8)。

# app/controllers/registrations_controller.rb 
class RegistrationsController < Devise::RegistrationsController 
    def new 
    debugger 
    end 

    def create 
    debugger 
    end 
end 

# config/routes.rb 
devise_for :users, :controllers => {:registrations => "registrations"} 

然后,我开始我的本地服务器--debugger选项(红宝石debug19安装),当进入/用户/ sign_up,调试器不会触发。

rails server --debugger 

Started GET "https://stackoverflow.com/users/sign_up" for 127.0.0.1 at 2011-07-11 21:21:46 +0900 
Processing by Devise::RegistrationsController#new as HTML 
Rendered devise/shared/_links.erb (3.8ms) 
Rendered devise/registrations/new.html.erb within layouts/application (20.4ms) 

更新:我用“rake routes”检查了我的路由,但是sign_up的路由依然如下。

user_registration POST /users(.:format) { 
    :action=>"create", :controller=>"devise/registrations"} 
new_user_registration GET /users/sign_up(.:format) { 
    :action=>"new", :controller=>"devise/registrations"} 

我想:控制器在POST时指向“注册”(无“devise /”)。 我错过了什么?

+0

你的文件名是'registration_controllers.rb'它应该是'registration_controller.rb' – lloydpick

+0

劳埃德,感谢您指出,但这是我发布到stackoverflow时的错字。我修好了它。 – tomodian

+0

registrations_controller.rb可能更合适,特别是如果您在routes.db中调用它“注册”时 –

回答

0

在你的routes.rb文件,

你可以修改通过以下方式你的色器件路线:

devise_for :users, :controllers => { :registrations => 'registrations' }