我的问题非常简单:
的application.js
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require ckeditor-jquery
//= require_tree ./code
//= require turbolinks
hljs.initHighlightingOnLoad();
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>
Highlight.js和default.css.scss位于assets文件夹中的位置,一切正常,如果我刷新页面。我试图在application.js中注释turbolinks行,一切正常。如何通过保持turbolinks使其工作?
这是我在我创建的几乎每个项目中遇到的问题。解决方案可以是在链接的标记中包含data-no-turbolink
,以打开我遇到问题的视图,但它是不依赖于单个链接的主页(以及其他网页)。最后,我更喜欢最佳解决方案而不是黑客。
答案 0 :(得分:4)
这个也让我感到意外,但是你需要考虑一下highlightSS认为除了TurboLinks之外已经调用它绕过document.ready事件。 @rsb的代码只考虑Turbolinks绕过document.ready事件触发器。所以在RSB的答案中你需要hljs.initHighlighting.called = false
:
ready = function() {
hljs.initHighlighting.called = false;
hljs.initHighlighting();
}
注意:我将通话更改为initHighlighting()
而不是initHighlightingOnLoad()
。
答案 1 :(得分:1)
在application.js
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require ckeditor-jquery
//= require_tree ./code
//= require turbolinks
ready = function(){
hljs.initHighlightingOnLoad();
}
$(document).ready(ready);
$(document).on('page:load', ready);
希望有所帮助!