Как я могу условно разработать <литий> в направляющих?

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

Как я могу сделать это?

Это - то, что я имею до сих пор, но выбранный стиль трудно кодируется, и я также не уверен, как знать, какая страница выбрана.

      <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>
7
задан NotDan 21 February 2010 в 18:44
поделиться

3 ответа

если каждый 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

ура

5
ответ дан 6 December 2019 в 15:21
поделиться

Вы также можете использовать для этого 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;
}

Узнайте больше о селекторах CSS.

1
ответ дан 6 December 2019 в 15:21
поделиться

Я полностью согласен с советом Джаррода, но на случай, если вам понадобится обрабатывать дополнительные условия (и вы хотите избежать уродливых вкраплений рубина в 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, прошу быть помягче :)

.
8
ответ дан 6 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: