使用设计Rails 3应用程序,我已阅读有关如何自定义后注册路由的wiki / docs,我正在使用可确认模块,所以我认为我需要覆盖after_inactive_sign_up_path_for
我想我已经做得很好,但它完全忽略了我的自定义控制器,并在注册后仍然路由到root_path。让我疯了。
我的注册是使用用户模型,我使用generate任务复制了devise的视图;如果我将它们移动到视图/注册设计回落到默认视图(在我想的宝石中),所以它似乎没有“注意到”我的控制器
我的路线中有这个:
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以防万一,使用确认)
它似乎完全忽略了我的控制器,命名错了吗? 感谢您的任何意见!
答案 0 :(得分:0)
我认为你的文件夹结构可能有问题。尝试这种结构:(它与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