Ruby on rails 注销后设计会话[:上一个url]为空
我曾经在登录后重定向回当前页面,使用Desive注销。 它几乎总是有效的,但有一个案例不是 我还重定向到登录页面后注销。没有这种重定向,一切都正常 不起作用的情况是:当我退出并再次登录时。在登录页面中,我打印会话[:previous url],它是空的,登录后,它重定向到根路径· 这种行为对我来说很奇怪。。。有什么想法吗 更新 这就是我提到的重定向。这样,会话[:上一个url]在登录页面中为空Ruby on rails 注销后设计会话[:上一个url]为空,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,我曾经在登录后重定向回当前页面,使用Desive注销。 它几乎总是有效的,但有一个案例不是 我还重定向到登录页面后注销。没有这种重定向,一切都正常 不起作用的情况是:当我退出并再次登录时。在登录页面中,我打印会话[:previous url],它是空的,登录后,它重定向到根路径· 这种行为对我来说很奇怪。。。有什么想法吗 更新 这就是我提到的重定向。这样,会话[:上一个url]在登录页面中为空 def after_sign_out_path_for(resource) login_pat
def after_sign_out_path_for(resource)
login_path
end
这就是它在没有重定向的情况下的工作方式。这样,会话[:上一个url]工作正常
def after_sign_out_path_for(resource)
session[:previous_url] || root_path
end
您需要在的_注销_路径_后覆盖设备的方法。在应用程序控制器中添加此方法
def after_sign_out_path_for(resource_or_scope)
request.referrer
end
我知道这是一个很老的问题,但很多人(包括我)仍然有这个问题 Desive在注销期间重置会话,因此正如RSB所写,您需要使用
request.referer
将用户重定向回其来源地
在您的特定情况下,您可能希望将方法更改为以下内容
def after_sign_out_path_for(resource_or_scope)
session[:previous_url] = request.referrer
redirect_to login_path
end
然而,希望应用程序能够记住用户注销和重新登录时的位置是。。。很奇怪。看来你没有理解我的问题。我现在进行了测试,您的代码与没有重定向的代码具有相同的行为。我用代码更新了问题。我希望现在更清楚了,您是否在应用程序控制器中包含了
store\u location
和after\u filter
?我看到了应该使用after\u filter:store\u location的地方,如果我使用after\u filter:authenticate\u user!我以前使用过after_过滤器,行为也一样