Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 密码控制器更新方法_Ruby_Ruby On Rails 3_Devise_Forgot Password_Change Password - Fatal编程技术网

Ruby 密码控制器更新方法

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

我正在尝试使用Desive实现重置密码页

我想要实现的是在更新密码后将页面重定向到不同的路径。因此,我在我的
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