Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 RoR 4&;TurboLinks 5缓存问题_Ruby On Rails_Ajax_Cart_Turbolinks - Fatal编程技术网

Ruby on rails RoR 4&;TurboLinks 5缓存问题

Ruby on rails RoR 4&;TurboLinks 5缓存问题,ruby-on-rails,ajax,cart,turbolinks,Ruby On Rails,Ajax,Cart,Turbolinks,我使用turbolinks5在RoR 4中创建了一个经典的购物车应用程序。用户可以更改给定项目的数量,然后单击“更新购物车”按钮更新购物车值 “更新购物车”按钮提交一个Ajax表单(data remote=“true”),以更新购物车,并增加/减少菜单中的购物车项目计数器 现在的问题是:每次用户单击“更新购物车”按钮时,购物车的新页面都会被缓存,因此,如果用户更新购物车3次,然后单击浏览器的“后退按钮”,它将显示购物车的三个旧版本(存储在缓存中) 因此: 我在购物车页面上使用了,这解决了问题,但

我使用turbolinks5在RoR 4中创建了一个经典的购物车应用程序。用户可以更改给定项目的数量,然后单击“更新购物车”按钮更新购物车值

“更新购物车”按钮提交一个Ajax表单(data remote=“true”),以更新购物车,并增加/减少菜单中的购物车项目计数器

现在的问题是:每次用户单击“更新购物车”按钮时,购物车的新页面都会被缓存,因此,如果用户更新购物车3次,然后单击浏览器的“后退按钮”,它将显示购物车的三个旧版本(存储在缓存中)

因此:

  • 我在购物车页面上使用了
    ,这解决了问题,但似乎有点过头了

  • 我在包含购物车项目计数的元素上使用了
    data turbolinks permanent
  • 222
  • ),但它不起作用,这就是,当单击“后退按钮”时,显示的是旧计数,而不是新计数

  • 如果我对所有页面都使用
    ,它可以工作,但显然我希望使用页面缓存

  • 你知道为什么这不起作用吗


    热情的问候

    我相信您所寻找的是

    应用程序访问可以在开始之前取消,无论是通过单击链接还是调用Turbolinks.visit启动的

    收听turbolinks:before visit事件,在访问即将开始时通知该事件,并使用event.data.url(或$event.originalEvent.data.url,在使用jQuery时)检查访问的位置。然后通过调用event.preventDefault()取消访问

    不能取消恢复访问,也不要在访问之前启动TurboLink。TurboLink通常通过浏览器的“后退”或“前进”按钮发出恢复访问,以响应已发生的历史导航


    通过侦听要触发的
    visit
    事件并拦截它,可以防止TurboLink缓存页面。

    尝试在此事件$(文档)中编写代码。(“TurboLink:load”,function(){//your code});