ruby-on-rails – 如何使用Turbolinks刷新页面

据我所知,我可以在 Turbolinks 5调用以下代码,但它会更改滚动位置.有没有办法调用Turbolinks来刷新页面而不是更改滚动位置?
Turbolinks.visit(location.toString());

这将做我想要的,但希望使用Turbolinks

window.location.reload()

解决方法

调用visit之前存储当前滚动位置,然后在页面加载时滚动到该存储位置.将存储的滚动位置重置为null可确保后续页面加载不会滚动到旧位置.一种可能的实现可能是:
var reloadWithTurbolinks = (function () {
  var scrollPosition

  function reload () {
    scrollPosition = [window.scrollX,window.scrollY]
    Turbolinks.visit(window.location.toString(),{ action: 'replace' })
  }

  document.addEventListener('turbolinks:load',function () {
    if (scrollPosition) {
      window.scrollTo.apply(window,scrollPosition)
      scrollPosition = null
    }
  })

  return reload
})()

然后你可以调用reloadWithTurbolinks().

要防止页面从顶部滚动到所需位置时闪烁,请在页面头部添加无预览缓存指令:

<Meta name="turbolinks-cache-control" content="no-preview">

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...