Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 注销后设计会话[:上一个url]为空_Ruby On Rails_Ruby On Rails 3_Devise - Fatal编程技术网

Ruby on rails 注销后设计会话[:上一个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

我曾经在登录后重定向回当前页面,使用Desive注销。 它几乎总是有效的,但有一个案例不是

我还重定向到登录页面后注销。没有这种重定向,一切都正常

不起作用的情况是:当我退出并再次登录时。在登录页面中,我打印会话[:previous url],它是空的,登录后,它重定向到根路径·

这种行为对我来说很奇怪。。。有什么想法吗

更新

这就是我提到的重定向。这样,会话[:上一个url]在登录页面中为空

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_过滤器,行为也一样