【问题标题】:Devise Resetting Password. Don't redirect, send back Ajax success?设计重置密码。不重定向,发回 Ajax 成功?
【发布时间】:2015-08-24 22:32:55
【问题描述】:

Rails 新手。有个问题。

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

protected def after_sending_reset_password_instructions_path_for(resource_name)
  root_path
end

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

编辑:

添加了 PasswordsController 及其外观:

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

再次感谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 devise


    【解决方案1】:

    所以这就是我最终要做的。

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

    所以,就自然地从 Devise 中获取 JSON 而言,我认为我是在找错树。

    所以我的解决方案是模仿 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 开箱即用,但它就是这样。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 2014-11-23
      • 2013-10-20
      • 2014-06-06
      • 1970-01-01
      相关资源
      最近更新 更多