Как пометить ссылку в меню макета как «активную» в рельсах? - PullRequest
4 голосов
/ 07 июня 2010

У меня есть ul, заполненный ссылками в моем layout / application.html.erb, и я хочу, чтобы ссылка на текущее местоположение была помечена class = "active".

Сейчас я использую:

<%= link_to 'About Us', { :controller => 'aboutus' }, :class => "menu#{' active' if params[:controller] == 'aboutus'}" %>

Но для меня это выглядит довольно неприятно.

У кого-нибудь есть идея получше?

Ответы [ 3 ]

14 голосов
/ 02 сентября 2011

Метод link_to_unless_current на самом деле не создает ссылку и не добавляет класс активных. Если вы все еще хотите это сделать, вы можете использовать метод current_page, чтобы проверить, соответствует ли текущая страница указанному вами маршруту:

<ul id="main_nav">
  <li><%= link_to "Search", search_path, :class => ('active' if current_page?(search_path)) %></li>
</ul>

Или, если вы хотите добавить класс в элемент обтекания:

<li class="<%= 'active' if current_page?(search_path) %>">
  <%= link_to "Search", search_path %>
</li>
5 голосов
/ 07 июня 2010

Вы можете использовать вспомогательный метод, аналогичный link_to

, который называется "link_to_unless_current".

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html (подробности здесь)

HTH

0 голосов
/ 11 февраля 2014

Пример корневого пути с тегом li, я пытался сделать это с тегом content_tag, но не в случае элегантного случая if

<li<%= " class='active'".html_safe if current_page?(root_path) %>>
    <%= link_to "Home", root_path %>
</li>

У меня возникают некоторые проблемы, когда я продолжаюкласс в пустом месте с начальной загрузкой (если я хорошо помню)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...