我读过像Override devise registrations controller这样的类似文章,但我的应用中的Devise没有正确覆盖。
我在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选项启动了本地服务器(安装了ruby-debug19),当访问/ users / sign_up时,调试器不会触发。
rails server --debugger
Started GET "/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时指向“注册”(没有“设计/”)。 我错过了什么?
答案 0 :(得分:0)
在routes.rb文件中,
您可以通过以下方式修改您的设计路线:
devise_for :users, :controllers => { :registrations => 'registrations' }