gpt4 book ai didi

ruby-on-rails - 成功登录 DEVISE 后,如何将用户重定向回之前需要登录的操作?

转载 作者:行者123 更新时间:2023-12-03 12:48:21 25 4
gpt4 key购买 nike

我有一个 ajax 投票按钮:如果用户单击“竖起大拇指”图像,但没有登录,那么他们应该会看到一个对话框,要求他们先登录。

要执行此对话框,我使用绑定(bind)到 ajax:failure 事件的 jQuery 和 facebox。如果用户未登录,Devise 将引发 401 Unauthorized。facebox 在显示 DEVISE 登录表单的弹出对话框中加载登录的远程 html。

一切正常,除了成功登录后,用户被重定向到主页。如果用户被重定向回他们正在查看的帖子,这样他们就可以继续投票,这会更直观。

是否有实现此行为的最佳实践方式?

谢谢。

最佳答案

我在 Rails 3 上使用 Authlogic 执行以下操作,也许您可​​以使用它或做类似的事情:

class ApplicationController < ActionController::Base
after_filter :store_location
private
def store_location
session[:return_to] = request.fullpath
end

def clear_stored_location
session[:return_to] = nil
end

def redirect_back_or_to(alternate)
redirect_to(session[:return_to] || alternate)
clear_stored_location
end
end

然后你可以使用类似 redirect_back_or_to dashboard_path在您的登录操作中。

对于某些 Controller /操作,我不想存储位置(例如登录页面)。对于那些我只是跳过过滤器的人:
class UserController < ApplicationController
skip_after_filter :store_location
end

在设计 wiki 中也有一个关于这样做的页面: https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

关于ruby-on-rails - 成功登录 DEVISE 后,如何将用户重定向回之前需要登录的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com