无法覆盖Devise密码控制器

在我提交电子邮件给我发送重置密码说明后,我需要将我的Rails应用程序重定向到主页。 默认情况下,设计在输入电子邮件后呈现登录表单。

所以我试图覆盖Devise::PasswordsController并更改其redirect_to ,但没有成功。 事实上,我认为Rails甚至不参加我的课程。 这可能是一个非常愚蠢的错误,但我已经在这里呆了半天没有成功。

我想从这里覆盖密码控制器。

这是我的控制器:

 class PasswordsController < Devise::PasswordsController protected def after_sending_reset_password_instructions_path_for(resource_name) root_url end end 

routes.rb中:

 devise_for :users, :controllers => {:passwords => "passwords"} devise_for :users, :controllers => {:registrations => "registrations"} devise_for :users, :controllers => {:sessions => "sessions"} 

我想提一下,我在同一个应用程序中覆盖了Devise的注册和会话控制器,它们似乎工作正常。

应该可以使用最新版本的Devise(2.1.2)覆盖控制器。

 class PasswordsController < Devise::PasswordsController def new super end def create ..override method here.. end end 

config/routes.rb

 devise_for :users, controllers: { passwords: 'passwords', .. } 

如果Rails使用派生的PasswordsController而不是原始的PasswordsController ,你可以检查rake routes ,路由应该包含passwords#new devise/passwords#new而不是devise/passwords#new

我想你忘记提及你在路线上的变化了:

 devise_for :users, :controllers => {:sessions => "sessions", :passwords => "passwords"}