前提・実現したいこと
自作アプリケーションのナビバーにboostrapで作成したドロップダウンメニューが開かなくなるという問題が発生したため、解決のために皆様のお力をお借りできれば幸いです。
ナビバーのコード
<header> <nav class="navbar navbar-expand-sm navbar-dark bg-dark"> <a class="navbar-brand font-select" href="/">BR</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent"> <ul class="navbar-nav"> <% if logged_in? %> <li class="nav-item dropdown"> <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">書籍情報</a> <ul class="dropdown-menu" aria-labelledby="navbarSupportedContent"> <li class="dropdown-item"><%= link_to '所有済', own_books_path %></li> <li class="dropdown-divider"></li> <li class="dropdown-item"><%= link_to '未所持', notyet_books_path %></li> <li class="dropdown-divider"></li> <li class="dropdown-item"><%= link_to 'お気に入り', own_books_path %></li> <li class="dropdown-divider"></li> <li class="dropdown-item"><%= link_to '新規作成', new_book_path %></li> </ul> </li> <li class="nav-item dropdown"> <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><%= current_user.name %></a> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarSupportedContent"> <li class="dropdown-item"><%= link_to 'プロフィール', user_path(current_user) %></li> <li class="dropdown-divider"></li> <li class="dropdown-item"><%= link_to 'ログアウト', logout_path, method: :delete %></li> </ul> </li> <% else %> <li class="nav-item"><%= link_to "Signup", signup_path, class: "nav-link font-select" %></li> <li class="nav-item"><%= link_to 'Login', login_path, class: 'nav-link font-select' %></li> <% end %> </ul> </div> </nav> </header>
試したこと
ディベロッパーツールなどで挙動を確認しつつ、動かしてみたところ aria-expanded="false" が本来であればクリック時に aria-expanded="true" に変化していなければならいはずなのですが、 aria-expanded="false" のままであることは確認できました。
リロードを行うとメニューの開閉が出来るようになるのですが、なぜそのような挙動になるのか調べても原因を突き止めることができませんでした。
補足情報(FW/ツールのバージョンなど)
boostrapはCDNを使って読み込んでいます。
<!DOCTYPE html> <html lang="ja"> <head> <title>BookRecord</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <mata name="description" content="Book Recordはあなたがお持ちの書籍を管理するためのアプリケーションです"> <%= csrf_meta_tags %> <%= csp_meta_tag %> <link href="https://fonts.googleapis.com/css?family=Kaushan+Script" rel="stylesheet"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css"> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> <script defer src="https://use.fontawesome.com/releases/v5.7.2/js/all.js"></script> </head> <body> <!--<div class="container">--> <%= render 'layouts/flash_messages' %> <%= yield %> <!--</div>--> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script> </body> </html>
CDN用のコードは最初に<head>内に書き込んでいましたが、様々な記事で<body>内に書き込んでいる記事が多く見られたので現在は<body>内に記述しています。
誤りの部分等があれば、ご指摘いただけると幸いです。
あなたの回答
tips
プレビュー