session[:previous_url] 无限滚动

Posted

技术标签:

【中文标题】session[:previous_url] 无限滚动【英文标题】:session[:previous_url] with endless scrolling 【发布时间】:2014-11-30 03:42:45 【问题描述】:

当用户登录或注册我的应用程序时,他们会被重定向回他们所在的页面。

这是在 application_controller.rb 中执行此操作的代码:

def after_sign_in_path_for(resource)
  session[:previous_url] || root_path
end

问题是我使用 ajax 和 will_paginate 来实现无限滚动。当用户滚动过第一页然后登录时,他们会被重定向到如下所示的 URL:

www.example.com/path_=1412539956365&page=6

仅显示第 6 页上的帖子。我如何简单地重定向回:

www.example.com/path    

【问题讨论】:

好吧,我猜你应该只为非 ajax 请求存储以前的 url。因此,只需检查请求是否不是xhr?,然后设置前一个 url,否则前一个 url 为 nil。 【参考方案1】:

您可以使用正则表达式去除查询字符串。下面是一个使用 rails 控制台的例子:

 ?> session[:previous_url]
   => www.example.com/path_=1412539956365&page=6

 ?> session[:previous_url][/[^\?_]+/]
   => "www.example.com/path"

您可以将您的功能更改为:

def after_sign_in_path_for(resource)
  session[:previous_url][/[^\?_]+/] || root_path
end

【讨论】:

以上是关于session[:previous_url] 无限滚动的主要内容,如果未能解决你的问题,请参考以下文章

PyFacebook 无限会话

理解 vue-router的beforeEach无限循环的问题

nodejs cookie与session

MeteorJS 无限页面刷新

小白式理解cookie 和 session

Spring security-无限用户会话超时与IDP