ruby-on-rails-4 – Material Design Lite不能与Turbolinks配合使用

我有一个简单的页面,有一个标题和抽屉导航,如下所示

我的问题是,每当我浏览到另一个页面,抽屉菜单图标(汉堡包图标)消失.我能够使用componentHandler.upgradeDom()触发图标显示;在Chrome的控制台.

我试图删除// =需要涡轮,一切都继续工作,当然是以我的页面加载速度为代价.

FYI,我把javascript移到了< body>的底部.提高第一页加载速度.我也试图将javascripts移回到< head>标签,有和没有data-turbolinks-track,问题仍然重现.

我希望MDL和Turbolinks可以一起工作,而不需要花费我(第一页)加载速度.

任何帮助非常感谢.

<body>
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
  <header class="mdl-layout__header">
    <div class="mdl-layout__header-row">
      <span class="mdl-layout-title"><%= yield(:title) %></span>
      <div class="mdl-layout-spacer"></div>
      <nav class="mdl-navigation mdl-layout--large-screen-only">
        <!-- some links -->
      </nav>
    </div>
  </header>
  <div class="mdl-layout__drawer">
    <span class="mdl-layout-title"><%= yield(:title) %></span>
    <nav class="mdl-navigation">
      <!-- some links -->
    </nav>
  </div>
  <main class="mdl-layout__content">
    <%= yield %>
  </main>
</div>


<%= javascript_include_tag 'https://storage.googleapis.com/code.getmdl.io/1.0.5/material.min.js','data-turbolinks-eval' => 'false' %>
<%= javascript_include_tag 'application','data-turbolinks-eval' => false %>
</body>

更新:我能够使两者一起工作的唯一方法是添加componentHandler.upgradeDom();在< body>的最末端

解决方法

另一个解决方案是使用TurboLinks的页面:change事件来调用upgradeDom.
document.addEventListener('page:change',function() {
  componentHandler.upgradeDom();
});

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...