Materializecss菜单只能在一个页面上正常工作

Materializecss menu works fine only on one page

本文关键字:常工作 工作 一个 菜单 Materializecss      更新时间:2023-09-26

我在Rails应用程序中使用materialize-sass gem,但使用它时遇到了一些问题。它只在根(主页)和其他一些页面上运行良好,但在整个网站上不可用。

.button-collapse失去功能,菜单无法工作。我只是点击它,或者点击(在移动设备中),什么都没发生。有时它在页面刷新后工作,有时不工作。总是在点击.button-collapse到url后,在最后添加#!(这在逻辑上是可以理解的),除了根(主页)。我认为这可能是jQuery的问题,但我在assets/javascripts/application.js中初始化了折叠按钮,如下所示:

$(function() {
  $(".button-collapse").sideNav();
});

就像官方指南中一样。此外,我正在尝试使用document.ready。我所有的相关代码都位于application.html.erb中,看起来像这样:

    <header>
      <div class="row">
        <nav class="col s12 nav-wrapper">
          <%= link_to 'Blog', root_path, class: 'brand-logo' %>
          <a href="#!" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
          <ul class="right hide-on-med-and-down">
            <% if user_signed_in? %>
              <li>
                <%= "Hello, #{current_user.username}" %>
              </li>
              <li>
                <%= link_to 'Sign out', destroy_user_session_path, method: :delete %>
              </li>
            <% else %>
              <li>
                <%= link_to 'Sign in', new_user_session_path %>
              </li>
              <% end %>
          </ul>
          <ul class="side-nav" id="mobile-demo">
            <% if user_signed_in? %>
              <li>
                <%= "Hello, #{current_user.username}" %>
              </li>
              <li>
                <%= link_to 'Sign out', destroy_user_session_path, method: :delete %>
              </li>
            <% else %>
              <li>
                <%= link_to 'Sign in', new_user_session_path %>
              </li>
            <% end %>
          </ul>
        </nav>
      </div>
    </header>

当我在Rails项目中使用涡轮链接时,我需要一种方法来处理它们。只需在JavaScript清单文件中添加jquery.turbolinks gem和以下代码://= require jquery.turbolinks就可以解决问题。此外,还有很多简单的方法可以通过添加以下内容来解决此问题:

$(document).on('ready page:change', function() {
  Waves.displayEffect(); // Initialize buttons wave effects
 $(".button-collapse").sideNav(); // Initialize collapse button
});