サイドメニューのアクティブ・非アクティブ化
実装したいこと
掲示板関連のページを使用しているときは、サイドバーの「掲示板一覧」をアクティブの状態にしたい。
ユーザーのときも同様。
実装
Bootstrapを使用しているので、例えばこのようにclass
にactive
を含めると、アクティブにしてくれます。
<a class="nav-link active" href="#">Active</a>
これを使って、アクティブにしたいときにはclass
にactive
を含めるようにして実装していきます。
def active_if(path) path == controller_path ? 'active' : '' end
三項演算子を使い、真のときはactive
、偽のときは何も返しません。
controller_path
でコントローラー名を取得できるって知りませんでした。
<%= link_to admin_boards_path, class: "nav-link #{active_if('admin/boards')}" do %> <%= link_to admin_users_path, class: "nav-link #{active_if('admin/users')}" do %>
さっきのヘルパーメソッドを使って、現在のコントローラーがadmin/boards
pathと一致しているときは、active
を返す。
するとclass: "nav-link active"
となるので、アクティブになる。
参考
Railsでアクティブなページに対応するタブのスタイル変える場合 - なんかの備忘録