javascript - Highlight.js 和 Rails,页面需要刷新 - 又是涡轮链接?

标签 javascript jquery ruby-on-rails

我的问题很简单:

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 行,一切正常。我怎样才能通过保留涡轮链接使其工作?

这是我在创建的几乎每个项目中都会遇到的问题。解决方案可能是在链接的标记中包含 data-no-turbolink ,该标记会打开我遇到问题的 View ,但它是一个不依赖于单个链接的主页(和其他主页)。最后,我更喜欢最佳解决方案而不是黑客。

最佳答案

这也让我感到惊讶,但是您需要考虑到highlightJS,认为除了绕过 document.ready 事件的 TurboLinks 之外,它还已经被调用。 @rsb 的代码仅考虑绕过 document.ready 事件触发器的 Turbolinks。因此,RSB 的答案中需要 hljs.initHighlighting. Called = false:

ready = function() {
  hljs.initHighlighting.called = false;
  hljs.initHighlighting();
}

注意:我将调用更改为 initHighlighting() 而不是 initHighlightingOnLoad()

关于javascript - Highlight.js 和 Rails,页面需要刷新 - 又是涡轮链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31446974/

相关文章:

javascript - js调整图片大小

javascript - 在 Chrome 控制台中调试 javascript

javascript - 在 <p> 标签中换行

javascript - 如何使用 eventBus 作为总线来将更新传递给 Vue 组件中的 View ?

javascript - React 代码旁边的 jQuery 代码示例 (noob)

javascript - HighCharts 在 yAxis 中使用文本而不是数字

javascript - Javascript 中的这段代码是什么?

ruby-on-rails - 将虚拟属性添加到 json 输出

ruby-on-rails - 如何组合重叠的时间范围(时间范围联合)

ruby-on-rails - 在 Rails/RSpec 请求测试中模拟非本地请求