Rails 3 / devise似乎忽略了自定义控制器

使用Rails 3应用程序的设计,我已经阅读了如何自定义后注册路由的wiki / docs,我正在使用可确认模块,所以我想我需要覆盖after_inactive_sign_up_path_for

我想我已经做得很好,但它完全忽略了我的自定义控制器,并在注册后仍然路由到root_path。 使我抓狂。

我的注册是使用用户模型,我使用generate任务复制了devise的视图; 如果我将它们移动到视图/注册设计回落到默认视图(在我猜的gem中),所以它似乎不是’注意’我的控制器

我的路线中有这个:

devise_for :users, :controllers => { :registrations => "registrations" } match 'sign_up_done' => 'home#sign_up_done', :as => :after_sign_up 

这是我的控制器:(controllers / registrations_controller.rb)

 class RegistrationsController < Devise::RegistrationsController def after_inactive_sign_up_path_for(resource) after_sign_up_path end def after_sign_up_path_for(resource) after_sign_up_path end end 

(添加after_sign_up_path_for以防万一,使用确认)

它似乎完全忽略了我的控制器,命名错了吗? 谢谢你的任何输入!

我认为您的文件夹结构可能有问题。 尝试这个结构:(它与Gem文件夹中的相同)

 app/controllers/devise/registrations_controller.rb app/views/devise/registrations/new.html.erb app/views/devise/registrations/edit.html.erb 

并且控制器文件看起来与在gem文件夹中声明的相同:

 #app/controllers/devise/registrations_controller.rb # NOT: class RegistrationsController < Devise::RegistrationsController , # since you are "overwriting" it. class Devise::RegistrationsController < DeviseController def after_inactive_sign_up_path_for(resource) #... end end