设计重置密码。不重定向,发回 Ajax 成功?

Devise Resetting Password. Don't redirect, send back Ajax success?

rails 的新手。有问题了。

在使用 Devise 请求更改密码后,它想要重定向到某个路径。我已经使用以下方法覆盖了这条路径:

protected def after_sending_reset_password_instructions_path_for(resource_name)
  root_path
end

但是,在我弄清楚如何将 JSON 对象传递回我现在使用 AJAX 的忘记密码页面之前,这确实是一个权宜之计。在发送重置密码指令而不是重定向后,有没有办法将 JSON 对象传回调用忘记页面?

已编辑:

添加了 PasswordsController 及其外观:

class Portal::PasswordsController < Devise::PasswordsController
  def create
    super
  end
end

再次感谢。

这就是我最终做的事情。

首先,我查看了设计源代码,如果电子邮件发送失败,它似乎很难重定向 (3.5.1) 或 return 到忘记密码。

所以,就自然地 JSON 脱离 Devise 而言,我想我找错了树。

所以我的解决方案是通过这种方式模仿 Devise 的做法:

class Portal::PasswordsController < Devise::PasswordsController
  respond_to :json, only: [:create]

  def create
    user = User.send_reset_password_instructions(params.fetch(:user))

    if successfully_sent?(user)
      render json: { data: "something" }, status: 200
    else
      render json: { data: "something bad" }, status: 400
    end
  end
end

如果成功,这似乎仍然会使用令牌和日期信息更新数据库和用户记录。

当然,我不喜欢这样做;我宁愿 AJAX 开箱即用,但它就是这样。

希望对您有所帮助。