メニューのアクティブ・非アクティブ化

管理画面において、以下のようにサイドバーで選択(クリック)した部分を青色(アクティブ)にさせる。

実装

ヘルパーにメソッドを定義する。

  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を返す。(青色になる)