Twitter引导药丸与Rails 3.2.2

时间:2012-03-25 17:54:48

标签: ruby-on-rails twitter-bootstrap

我按照基本的railscast在Rails应用程序中使用Twitter Bootstrap。一切都很好,直到我不得不推送到heroku,然后我有一些pg gem的问题,我不得不耙资产:预编译推得好。最后我解决了。

现在,我正在尝试在我的应用程序中使用药丸,我已从文档中复制/粘贴并更改了href中的URL:)

<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但是悬停属性工作正常...我的意思是,当鼠标超过一个选项(与活动不同)时,它的样式会改变。

我尝试过rake资产:干净,但没有做出任何改变

由于

2 个答案:

答案 0 :(得分:20)

你实际上必须自己处理这个问题!

您的列表应该类似于

    <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散列中传递的控制器名称(以及必要时的操作)来完成此操作。

答案 1 :(得分:5)

我使用帮助器以Rails&#39;的方式实现这一点。帮助者。

在帮助程序中(例如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 %>

此示例生成(在&#39;用户&#39;页面上):

<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>