Rails管理画面アプリのナビゲーションを作成するにあたって、
現在ページのカレント表示のやり方で簡単な方法が分かったので紹介します。
例)トップページの場合
まずはトップページを例とします。
トップページへのヘルパーメソッドはadmin_path``(/admin)
とします。
<ul class="nav">
<li class="nav-link <%= 'active' if request.path == admin_path %>"><a href="<%= admin_path %>">トップページ</a></li> #ここの行に注目
<li class="nav-link"><a href="#">リンク1</a></li>
<li class="nav-link"><a href="#">リンク2</a></li>
</ul>
解説
request.path
で現在のパスがわかるので、これとadmin_path
のヘルパーメソッドを比較し、
trueだった場合はactiveのクラスを付与するようにしています。
(if request.path == admin_path の箇所)
例)トップページ以外の場合
次はトップページ以外を例とします。
前提としてroutes.rb
にはadmin_users
をresources
として設定していること。
トップページ以外へのヘルパーメソッドの例はadmin_users_path``(/admin_users)
とします。
Rails.application.routes.draw do
resources :admin_users
end
<ul class="nav">
<li class="nav-link <%= 'active' if request.path == admin_path %>"><a href="<%= admin_path %>">トップページ</a></li>
<li class="nav-link <%= 'active' if request.path.starts_with?(admin_users_path) %>"><a href="<%= admin_users_path %>">ユーザー一覧</a></li> #ここの行に注目
<li class="nav-link"><a href="#">リンク2</a></li>
</ul>
解説
request.path
で現在のパスがわかるので、これとadmin_users_path
のヘルパーメソッドをstarts_with?メソッド
で先頭の文字列をチェックし、
trueだった場合はactiveのクラスを付与するようにしています。
(if request.path.starts_with?(admin_users_path) の箇所)