【问题标题】:Password controller update method密码控制器更新方法
【发布时间】:2013-12-20 11:39:15
【问题描述】:

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

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

我的控制器如下所示:

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 中实现的更新方法有问题还是我遗漏了什么?

【问题讨论】:

  • 您是否确认您的密码更新未通过验证?
  • @zeantsoi 是的,电子邮件已正确验证。
  • 这个运气好吗?如果提供的解决方案没有解决您的问题,您能否更新您的问题以更深入地了解您的问题?
  • @zeantsoi...没有希望...兄弟...我会更新这个问题...似乎更新方法失败了。否则我的密码应该在第一时间更新......即使它没有正确重定向......
  • 对此有任何更新吗?无论您对持续存在的问题有何进一步了解,都会有所帮助。

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


【解决方案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

或者,我想如果您要在ApplicationController 中指定after_resetting_passwords_path,您将能够完全绕过覆盖Devise::PasswordsController(尽管您需要有条件地在ApplicationController 中设置布局。

【讨论】:

  • +1 回复...感谢您的回答。但恐怕我必须指定一个不同的更新视图。实际上,一旦执行了设计中通常的 password#update 方法,我就会尝试将其重定向到不同的路径。
  • 只要你声明了after_resetting_password_path_for 路径,这个解决方案就可以工作。问题不在于在update 操作之后没有正确重定向路径——而是从一开始就找不到update 操作(这就是您的密码没有被更新的原因)。将update 操作添加到您的控制器应该可以解决问题。您是否已实施此解决方案以查看其是否有效?
  • 我使用 super 方法实现........但没有渲染 :update 因为我没有任何 update.html.erb 文件
  • 你能澄清一下吗?永远不应该有update.html.erb 文件,因为操作应该重定向。你不希望它做什么?
  • 我已更新我的答案以显示您的自定义控制器的全部内容应该。这应该 1)更新您的密码,以及 2)重定向到 root_path,正如您的问题所指定的那样。如果确实如此,您会考虑接受这个答案是正确的吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多