LoginSignup
4
0

More than 1 year has passed since last update.

RailsでBootstrapのハンバーガーメニューが動作しない

Posted at

Railsアプリ開発中に出会った問題についてまとめています。

今回は、Bootstrap5のハンバーガーメニューが正常に動作しない問題に直面しました。

開発環境
- Ruby 2.7.3
- Rails 6.1.4.1
- Bootstrap 5.1

調べたところ、Bootstrap 4系から5系で破壊的な変更が行われた影響で、Bootstrap5ではRails6においてハンバーガーメニューが正常に動作しないらしい。

そのため、正常に動作することが確認されているBootstrapのバージョンをダウングレードすることにした。

Bootstrap4.6系でもハンバーガーメニューは正常に動作しないようなので、Bootstrap4.5系を利用した。
下記のコマンドでバージョンを更新できる。ダウングレードであってもupgradeと記述する点は注意したい。

ターミナル
yarn upgrade bootstrap@~4.5.1

Bootstrap4系ではjqueryが必要になるため、こちらもインストール

ターミナル
yarn add jquery

1度、Bootstrap5系Navコードを貼り付けて動作を確認している場合は、Bootstrap4.5系Navコードに変更する必要がある。

5系と4.5系のコードは下記のように異なっている。

Bootstrap5系
<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Features</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Pricing</a>
        </li>
        <li class="nav-item">
          <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
        </li>
      </ul>
    </div>
  </div>
</nav>
Bootstrap4.5系
<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#">Disabled</a>
      </li>
    </ul>
  </div>
</nav>

今回学んだこと

プログラムは日々改良されているが、最新版が最適とは限らないことを学んだ。
安定して動作することを確認済みのバージョンを使用する方が、エラーが発生した際のコストが低くなると感じた。

Bootstrap5系になったことで、これまで必要であったjqueryが不要になったのに、結局バグで使用できないのは残念。。。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0