Таблетки начальной загрузки Twitter с Rails 3.2.2 - PullRequest
4 голосов
/ 25 марта 2012

Я следовал базовому Railscast для использования Twitter Bootstrap в приложении Rails.Все было замечательно, пока мне не пришлось нажимать на heroku, тогда у меня были некоторые проблемы с pg gem, и мне пришлось набирать ресурсы: прекомпилировать, чтобы все прошло нормально.Наконец-то я решил.

Теперь я пытаюсь использовать таблетки в своем приложении, я скопировал / вставил из документации и изменил URL в href:)

<div class="container">
  <div class="row">

    <div class="span3">
      <p> Lorem Ipsum</p>
    </div>

    <div class="span9">    
      <ul class="nav nav-pills">
        <li class="active"><a href="/">Home</a></li>
        <li><a href="/products">Products</a></li>
        <li><a href="/categories">Categories</a></li>
      </ul>
    </div>

  </div>
</div>

Когда я нажимаюодна из ссылок, я перенаправлен на правильный URL, но выбранная опция не меняется на class = "active".Я не знаю почему ... Я думал, что это был javascript, но свойство hover работает нормально ... Я имею в виду, когда мышь находится над опцией (отличной от активной), ее стиль меняется нормально.

IПопробовал рейк-активы: чистый, но без изменений

Спасибо

Ответы [ 3 ]

20 голосов
/ 25 марта 2012

Вы на самом деле должны справиться с этим самостоятельно!

Ваш список должен выглядеть примерно так:

    <li class="<%= 'active' if params[:controller] == 'yourdefaultcontroller' %>"><a href="/">Home</a></li>
    <li class="<%= 'active' if params[:controller] == 'products' %>"><a href="/products">Products</a></li>
    <li class="<%= 'active' if params[:controller] == 'categories' %>"><a href="/categories">Categories</a></li>

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

17 голосов
/ 27 июля 2012

Вы можете использовать что-то вроде этого:

<li class="<%= 'active' if current_page?(root_path) %>"><%= link_to "Home", root_path %></li>
<li class="<%= 'active' if current_page?(about_path) %>"><%= link_to "About", about_path %></li>
<li class="<%= 'active' if current_page?(contact_path) %>"><%= link_to "Contact", contact_path %></li>
5 голосов
/ 07 июня 2014

Я использовал помощник для реализации этого в стиле помощников форм Rails.

В помощнике (например, app/helpers/ApplicationHelper.rb):

def nav_bar
  content_tag(:ul, class: "nav navbar-nav") do
    yield
  end
end

def nav_link(text, path)
  options = current_page?(path) ? { class: "active" } : {}
  content_tag(:li, options) do
    link_to text, path
  end
end

Затем в представлении (например, app/views/layouts/application.html.erb):

<%= nav_bar do %>
  <%= nav_link 'Home', root_path %>
  <%= nav_link 'Posts', posts_path %>
  <%= nav_link 'Users', users_path %>
<% end %>

В этом примере показано (на странице «пользователей»):

<ul class="nav navbar-nav">
  <li><a href="/">Home</a></li>
  <li><a href="/posts">Posts</a></li>
  <li class="active"><a href="/users">Users</a></li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...