У меня есть приложение для направляющих с помощью ул. в качестве панели инструментов. Я хочу (выбрать) стиль для применения к странице, пользователь идет.
Как я могу сделать это?
Это - то, что я имею до сих пор, но выбранный стиль трудно кодируется, и я также не уверен, как знать, какая страница выбрана.
<ul>
<li class="firstItem"><%= link_to "About", '/about' %></li>
<li class="item"><%= link_to "Page1", '/page1' %></li>
<li class="item selected" <%= link_to "Page2", '/page2' %></li>
<li class="item"><%= link_to "Contact", '/contact' %></li>
<li class="lastItem"><%= link_to "Blog", '/blog' %></li>
</ul>
если каждый li связан с другим контроллером, вы можете использовать имя_контроллера
, чтобы добавить или нет выбранный
класс
Вот пример из моего приложения, он в хамле
%ul
%li
%a{:href => '/kebabs', :class => ('current' if controller_name == 'kebabs')} Admin kebabs
%li
%a{:href => '/statistics', :class => ('current' if controller_name == 'statistics')} Statistiques
%li
%a{:href => '/people', :class => ('current' if controller_name == 'people')} Admin Personnes
ура
Вы также можете использовать для этого css. Дайте каждому телу каждой страницы класс и id из имен контроллера и действия.
<body class="<%= controller.controller_name %>" id="<%= controller.action_name %>">
Затем присвойте id элементам ul и li.
<ul id="nav'>
<li id="about"></li>
<li id="contact"></li>
<li id="blog"></li>
</ul>
Теперь вы можете ссылаться на конкретную ссылку на конкретной странице из вашей таблицы стилей.
body.blog#index ul#nav a#blog:link
Так, если вы хотите сделать ссылки разделов "липкими", вы можете ссылаться на них все сразу, не указывая id body.
body.blog ul#nav a#blog:link,
body.contact ul#nav a#contact:link {
background-color: red;
}
Я полностью согласен с советом Джаррода, но на случай, если вам понадобится обрабатывать дополнительные условия (и вы хотите избежать уродливых вкраплений рубина в HTML-код), взгляните на метод content_tag в Rails.
С его помощью вы можете заменить что-то вроде:
<li class=<%= @post.active? ? 'active' : 'suspended' %>>
<%= link_to @post.name, post_path(@post) %>
</li>
на что-то вроде:
<%= content_tag :li, link_to(@post.name, post_path(@post), :class => @post.active? ? 'active' : 'suspended' %>
И, конечно, если вы поместите этот код в хелпер и вызовете его оттуда, вы получите еще больше очков элегантности.
Надеюсь, это поможет.
PS: Это мой первый пост на Stackoverflow, прошу быть помягче :)
.