设计重置密码。不重定向,发回 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 开箱即用,但它就是这样。
希望对您有所帮助。
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 开箱即用,但它就是这样。
希望对您有所帮助。