问题 无法覆盖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的注册和会话控制器,它们似乎工作正常。


11670
2018-01-10 19:56


起源

您使用的是什么设计版本? - Vasiliy Ermolovich
我正在使用设计1.5.3 - abhijeetmisra


答案:


应该可以使用最新版本的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', .. }

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


12
2017-10-09 15:59





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

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

3
2018-01-10 20:00