前提・実現したいこと
rails、bootstrapでメニューバーを作成しています。
現在表示しているページのリンクを自動でアクティブな状態にしたいです。
発生している問題・エラーメッセージ
アクティブな状態が実装できません。
以下記事を参考に作成しました。
サイドメニューのアクティブ・非アクティブ化
該当のソースコード
app/helpers/application_helper.rb
module ApplicationHelper (省略) def active_if(path) path == controller_path ? 'active' : '' end end
app/views/users/_sidebar.html.erb
<div class="col-auto col-md-3 col-xl-2 px-sm-2 px-0 bg-light"> <div class="d-flex flex-column align-items-center align-items-sm-start px-3 pt-2 text-white min-vh-100"> <ul class="nav nav-pills nav-fill flex-column mb-sm-auto mb-0 align-items-center align-items-sm-start" id="menu"> <li class="nav-item"> <!-- 該当のコード --> <%= link_to mypage_path, class: "nav-link align-middle px-0 #{active_if('mypage')}" do %> <i class="fa-solid fa-house"></i><span class="ms-1 d-none d-sm-inline">マイページ</span> <% end %> </li> <li class="nav-item"> <%= link_to profile_path, class: "nav-link align-middle px-0 #{active_if('profile')}" do %> <i class="fa-solid fa-user"></i><span class="ms-1 d-none d-sm-inline">プロフィール</span> <% end %> </li> </ul> </div> </div>
routes.rb
Rails.application.routes.draw do get 'mypage', to: 'users#mypage' (省略) resource :profile (省略) end
試したこと
classに手動でactiveを付与するとアクティブな状態になるため、
ヘルパーに問題があると思いますが、同じコードを使用しているのに
実装できない原因がわかりません。
恐れ入りますがよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ruby: 3.0.2
rails: 6.0.4
Bootstrap: 5.0
まだ回答がついていません
会員登録して回答してみよう