在我预编译资产并将其上传到CDN后,我决定开启turbolinks。在我预编制资产之前,它们已经开启了,我在Gemfile中有gem turbolinks
而在require turbolinks
有application.js
但在application.html
我有data-no-turbolink
而不是data-turbolinks-track" => true
。
现在我将其更改为data-no-turbolink
到data-turbolinks-track" => true
并期望它们在我本地计算机上的生产中工作,但似乎它们不是。从视觉上看,他们似乎没有工作,并且"发起人"在浏览器中不是涡旋链接。
我不想重新编译资产,如果它不是真的需要,因为将它们重新上传到CDN需要花费很多时间。
所以我必须重新编译它们吗?或许我只是没有注意到他们已经在工作了?
答案 0 :(得分:1)
data-turbolinks-track
仅用于资产跟踪(以确保加载的资产文件是最新的)。它不会影响Turbolinks是否用于特定链接。
如果安装了turbolinks,将使用Turbolinks UJS加载任何没有 data-no-turbolink
的内部链接。
如果Turbolinks正在运行,以下代码将触发警报。
$(document).on('page:load', function(){ alert("Turbolinks is active"); });
答案 1 :(得分:0)
使用您提供的稀疏信息并不容易。但这里有一些值得考虑的注意事项:
关于Turbolinks:
使用Turbolinks页面会在没有完全重新加载的情况下更改,因此您不能 依赖DOMContentLoaded或jQuery.ready()来触发你的代码。 相反,Turbolinks会在文档上触发事件以提供钩子 页面的生命周期。
你可能使用jQuery?阅读以上链接了解。一个很好的解决方案是:jQuery.turbolinks
... 但是如果你有一个包含大量$(el)的大型代码库.bind(...) Turbolinks会给你带来惊喜。 JavaScripts的大部分内容都会停止 以通常的方式工作。这是因为您绑定事件的节点 不复存在。 ...