0

ユーザーが特定のサブページ (この場合はユーザーのインデックス ビュー) にいるときは常にアクティブなタブを示す次のコードがあります。

  <li class="<%='active' if current_page?(users_path) %>">
    <%= link_to 'Users',      users_path %></li>

ユーザーが表示、編集、またはインデックスページのいずれかにいるときはいつでも、タブが「アクティブ」として表示されるようにしたいと思います。

私はこのようなことを試しました:

  <li class="<%='active' if current_page?(users_path || edit_user_path || user_path) %>">
    <%= link_to 'Users',      users_path %></li>

ただし、users_path のみが認識されます。

OR ステートメントを current_page メソッドに組み込む正しい方法は何ですか?

4

2 に答える 2

0

それはあるべきです

<li class="<%='active' if current_page?(users_path) || current_page?(edit_user_path) || current_page?(user_path) %>">

多くのページに対してこれを行っている場合、これを維持するのは困難です。セマンティック ナビゲーションには gem を使用することをお勧めします。

于 2013-03-10T01:03:15.530 に答える
0

これは、以前のアプリで使用したコードです。

def nav_item(copy, link)                             
  content_tag :li, class: nav_class(link) do         
    link_to copy, link                             
  end                                                
end

def nav_class(page)
  case page
  when :users     then 'active' if request.path.match(/^\/users/)
  when :projects  then 'active' if request.path.match(/^\/projects/)       
  else                                               
    nil                                              
  end                                                
end    

上記の 2 つのヘルパー メソッドは、ルートが現在のパスと一致する場合にliタグ内のリンクをレンダリングします。class="active"

UsersController アクションではありません:

<%= nav_item('Users', :users) %>  #=> <li><a href="/users">Users</a></li>

UsersController アクションで:

<%= nav_item('Users', :users) %>  #=> <li class="active"><a href="/users">Users</a></li>
于 2013-03-10T01:24:04.187 に答える