メニューのアクティブ・非アクティブ化
管理画面において、以下のようにサイドバーで選択(クリック)した部分を青色(アクティブ)にさせる。
実装
ヘルパーにメソッドを定義する。
def active_if(path) path == controller_path ? 'active' : '' end
controller_path?
でcontroler名を取得する。
controller_path?
がtrueの場合、activeを返し、そうでない場合何も返さない。
三項演算子
if文の単純な分岐を短く書くことができる。
例
if 条件 式1 else 式2 end
条件 ? 式1 : 式2
上記で定義したヘルパーメソッドをview側へ記述する。
<%= 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 %>
path == controller_path ?
により、リンク先に指定したpathとコントローラーが等しければactiveを返す。(青色になる)