Ruby 密码控制器更新方法
我正在尝试使用Desive实现重置密码页 我想要实现的是在更新密码后将页面重定向到不同的路径。因此,我在我的Ruby 密码控制器更新方法,ruby,ruby-on-rails-3,devise,forgot-password,change-password,Ruby,Ruby On Rails 3,Devise,Forgot Password,Change Password,我正在尝试使用Desive实现重置密码页 我想要实现的是在更新密码后将页面重定向到不同的路径。因此,我在我的passwords\u controller.rb中根据进行了更改 我的控制器如下所示: class Users::PasswordsController < Devise::PasswordsController # basic is my html.erb file for layout purpose.... layout "basic" def edit
passwords\u 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
在这里,我可以在app/views/passwords/edit.html.erb
中访问我的视图
问题在于
方法(在passwords\u controller.rb中被重写)的加密密码路径之后,该方法没有被执行,我被重定向到输出中的同一页面,而不是根路径
。此外,未进行更新
这是Deave中实现的更新方法的问题还是我遗漏了什么?我怀疑–因为您已经覆盖了默认的Deave
密码控制器
–您的编辑
操作正在寻找发布到同一控制器中的更新
操作,但没有。尝试将自定义控制器更新为以下内容:
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
class用户::密码控制器
或者,我设想如果在
应用程序控制器
中重置密码后指定路径
,则可以完全绕过覆盖设计::密码控制器
(尽管需要在应用程序控制器
中有条件地设置布局).这可能会有帮助..我使用它,它会工作..只是分享。。
您是否已验证您的密码更新未通过验证?@zeantsoi是的,电子邮件已正确验证。这方面是否有问题?如果提供的解决方案没有解决您的问题,您能否更新您的问题以提供对您问题的更多了解?@zeantsoi…没有希望…兄弟..我将更新此问题…似乎更新方法失败了。否则我的密码应该在第一步就更新了…即使它没有正确重定向…对此有任何更新吗?无论你能为你的持续问题提供什么样的补充信息,都会很有帮助。+1的回答……我感谢你的回答。但恐怕我必须为更新指定一个不同的视图。事实上,我正在尝试在执行Desive中常用的密码更新方法后将其重定向到另一个路径。只要您在重置路径的密码路径后声明了您的
,此解决方案就应该有效。问题不在于路径在更新
操作后没有被正确重定向到–问题在于更新
操作从一开始就找不到(这就是您的密码没有被更新的原因)。将update
操作添加到控制器应该可以解决问题。你实现这个解决方案了吗?我使用super方法实现了……但是没有呈现:update,因为我没有任何update.html.erb文件。你能澄清一下吗?永远不应该有update.html.erb
文件,因为操作应该重定向到别处。您希望它做什么?我已经更新了答案,以显示自定义控制器的完整内容。这应该1)更新您的密码,2)重定向到根路径
,如您的问题所述。如果确实如此,请您考虑接受这个答案是否正确?
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