密码控制器更新方法



我正在尝试使用Devise实现一个重置密码页面。

我想要实现的是在更新密码后将页面重定向到不同的路径。因此,我根据文档对passwords_controller.rb进行了更改。

我的控制器看起来像这样:

class Users::PasswordsController < Devise::PasswordsController
  # basic is my html.erb file for layout purpose....
  layout "basic"
  def edit
    render :edit
  end
  def after_resetting_password_path_for(resource)
    root_path
  end
end

在我的routes.rb文件中。我已经包括了密码控制器的路线:

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

在这里,我可以访问app/views/passwords/edit.html.erb中的视图。

问题是after_resseting_password_path_for方法(在passwords_controller.rb中被重写)没有被执行,并且我被重定向到输出中的同一页,而不是root_path。此外,也没有进行更新。

是Devise中实现的更新方法有问题,还是我遗漏了什么?

我怀疑,由于您已经覆盖了默认的Devise PasswordsController,您的edit操作希望发布到同一控制器中的update操作,但没有。尝试将您的自定义控制器更新为以下内容:

class Users::PasswordsController < Devise::PasswordsController
  layout "basic"
  def edit
    render :edit
  end
  def update
     render :update
  end
  def after_resetting_password_path_for(resource)
    root_path
  end    
end

或者,我认为如果ApplicationController中指定after_resetting_passwords_path,则可以完全绕过覆盖Devise::PasswordsController(尽管您需要有条件地在ApplicationController中设置布局)。

这可能会有所帮助。。我用这个就行。。只是分享。。http://www.stumbleupon.com/su/34E99D#

最新更新