Ruby on rails TurboLink和Scrollspy

Ruby on rails TurboLink和Scrollspy,ruby-on-rails,turbolinks,scrollspy,Ruby On Rails,Turbolinks,Scrollspy,我从boostrap文档中复制了侧菜单 一切看起来都很好,但一旦从子菜单中单击锚定标记,当前子菜单就会崩溃。滚动到下一个子菜单部分将重新打开子菜单,它将再次正常工作。但是,滚动回单击的锚定标记将再次折叠子菜单 我已经确认关闭turbolinks会解决这个问题,但我希望在保留turbolinks的同时解决这个问题。不幸的是,我无法重现您正在经历的行为,因此如果您有一个可以分享的示例,这会有所帮助 您可能在TurboLink处理相同页面锚的方式上遇到了一个错误。它当前会重新加载页面,然后滚动到元素,

我从boostrap文档中复制了侧菜单

一切看起来都很好,但一旦从子菜单中单击锚定标记,当前子菜单就会崩溃。滚动到下一个子菜单部分将重新打开子菜单,它将再次正常工作。但是,滚动回单击的锚定标记将再次折叠子菜单


我已经确认关闭turbolinks会解决这个问题,但我希望在保留turbolinks的同时解决这个问题。

不幸的是,我无法重现您正在经历的行为,因此如果您有一个可以分享的示例,这会有所帮助

您可能在TurboLink处理相同页面锚的方式上遇到了一个错误。它当前会重新加载页面,然后滚动到元素,而不仅仅是滚动到元素。TurboLink存储库中已注意到此错误:。一种可能的解决方案是防止TurboLink在同一页面锚点击时重新加载页面:

$(document).on('turbolinks:click', function (event) {
  if (event.target.getAttribute('href').charAt(0) === '#') {
    return event.preventDefault()
  }
})

稍微有点不好的地方是,这可能会导致后退按钮问题。否则,在加载页面后,您可能希望尝试调用相关选择上的
.scrollspy('refresh')

不幸的是,我无法重现您正在经历的行为,因此如果您有一个示例可以分享,这会有所帮助

您可能在TurboLink处理相同页面锚的方式上遇到了一个错误。它当前会重新加载页面,然后滚动到元素,而不仅仅是滚动到元素。TurboLink存储库中已注意到此错误:。一种可能的解决方案是防止TurboLink在同一页面锚点击时重新加载页面:

$(document).on('turbolinks:click', function (event) {
  if (event.target.getAttribute('href').charAt(0) === '#') {
    return event.preventDefault()
  }
})
稍微有点不好的地方是,这可能会导致后退按钮问题。否则,在加载页面后,您可能希望尝试在相关选择上调用
.scrollspy('refresh')
(请参阅:)