我按照基本的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资产:干净,但没有做出任何改变
由于
答案 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>