概要

現在、Ruby on Railsでアプリを開発しています。CSSフレームワークにとしてBootstrap4を採用しているのですが、Navbarのハンバーガーメニューが閉じないという現象に遭遇。「Bootstrap4 ハンバーガーメニュー 閉じない」などのキーワードでググってみるも、なかなか効果的な情報は出てこず…。

管理人
解決するまでに割とハマってしまったので再発を防ぐためにメモ書きとして残します。

環境

  • Ruby 2.6.3
  • Rails 5.2.4
  • Bootstrap4

実際の状況

<nav class="navbar navbar-expand-lg navbar-dark bg-danger">
  <div class="container">
    <%= link_to root_path, class: "navbar-brand" do %>
      SAMPLE APP
    <% end %>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon collapse-close"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarResponsive">
      <ul class="navbar-nav ml-auto">
        <li class="nav-item">
          <%= link_to new_signup_path, class: "nav-link text-white" do %>
            <i class="fas fa-user-edit"></i> ユーザー登録
          <% end %>
        </li>
        <li class="nav-item">
          <%= link_to login_path, class: "nav-link text-white" do %>
            <i class="fas fa-power-off"></i> ログイン
          <% end %>
        </li>
      </ul>
    </div>
  </div>
</nav>

管理人
この通り、ハンバーガーメニューが再度クリックしても閉じないという現象に見舞われました。

解決した方法

実際に解決できた方法を単刀直入に言うと、「app/assets/javascript/application.js」の中の

 

//*= require_tree .

 

を削除する事で上手く作動しました。

 

//= require rails-ujs
//= require jquery3
//= require popper
//= require bootstrap-sprockets
//= require activestorage
//= require gmaps/google
//*= require_tree .

 

この最後の行に記述されている部分ですね。

 

このコードは「app/assets/stylesheets以下の全CSSファイルを読み込む」という意味を持つらしいのですが、おそらくこれが何か余計なものを読み込んでしまっていたのかもしれません。僕自身、まだプログラミングを学び始めて間もないため詳しい事は調査中。何かわかったら追記します。

 

管理人
とにもかくにも、上記の手段で僕の場合は解決できたので、同じ現象にハマっている方はダメ元で一度実践してみてはいかがでしょうか?
おすすめの記事