密码控制器更新方法

时间:2013-12-04 05:32:27

标签: ruby ruby-on-rails-3 devise forgot-password change-password

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

我想要实现的是在更新密码后将页面重定向到不同的路由。因此,我根据the documentationpasswords_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中实现更新方法的问题还是我遗漏了什么?

2 个答案:

答案 0 :(得分:1)

我怀疑 - 由于您已覆盖默认设计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

另外,我想如果你要在after_resetting_passwords_path中指定ApplicationController,你就可以绕过覆盖{{ 1}}完全(尽管您需要在Devise::PasswordsController)中有条件地设置布局。

答案 1 :(得分:1)

这可能会有所帮助..我使用它,它工作..只是分享.. http://www.stumbleupon.com/su/34E99D#