Rad*_*ino 1 javascript jquery ruby-on-rails
我的问题很简单:
应用程序.js
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require ckeditor-jquery
//= require_tree ./code
//= require turbolinks
hljs.initHighlightingOnLoad();
Run Code Online (Sandbox Code Playgroud)
index.html.erb
<div class="ui items" data-no-turbolink>
<% @posts.each do |post| %>
<div class="index_post" data-no-turbolink>
<%= link_to post.title, post, class: 'ui large header' %>
<div class="date_created">
<%= post.created_at.strftime("%B %d, %Y") %>
</div>
<div class="content">
<%= simple_format(post.body) %>
</div>
</div>
<% end %>
</div>
Run Code Online (Sandbox Code Playgroud)
Highlight.js 和 default.css.scss 位于资产文件夹中的位置,如果我刷新页面,一切都会成功。我试图注释掉 application.js 中的 turbolinks 行,一切正常。如何通过保持 turbolinks 使其工作?
这是我几乎在我创建的每个项目中都会遇到的问题。一个解决方案可能是data-no-turbolink在链接的标签中包含我有问题的视图,但它是一个不依赖于单个链接的主页(和其他页面)。最后,我更喜欢最佳解决方案而不是 hack。
这也让我感到惊讶,但是您需要考虑 highlightJS 认为除了绕过 document.ready 事件的 TurboLinks 之外,它已经被调用。@rsb 的代码仅考虑绕过 document.ready 事件触发器的 Turbolinks。所以你需要hljs.initHighlighting.called = false在 RSB 的回答中:
ready = function() {
hljs.initHighlighting.called = false;
hljs.initHighlighting();
}
Run Code Online (Sandbox Code Playgroud)
注意:我将调用更改为initHighlighting()而不是initHighlightingOnLoad().