我有一个is_active?帮助器在我的导航栏中定义活动链接。它工作正常。但我有一个客户页面,其中有许多客户端(在侧边栏列表中),当我点击每个客户端时,页面重新加载并获取客户端ID的URL(/ clientes / 1,/ clientes / 2 .. )。我的is_active?仅适用于第一个客户端(id = 1)。当我单击其他客户端时,活动类将消失。
我的标题视图如下所示:
<nav class="navbar navbar-inverse navbar-default" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="container" id="container-header">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<%= link_to "Zetta Comunicação", root_path, class: "navbar-brand logo img-responsive" %>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav navbar-right">
<li class="<%= is_active?(servicos_path) %>">
<%= link_to "A Empresa", servicos_path %>
</li>
<li class="<%= is_active? (cliente_unique_path(1)) %>">
<%= link_to "Clientes", cliente_unique_path(1) %>
</li>
<li class="<%= is_active?(new_contato_path) %>">
<%= link_to "Contato", new_contato_path %>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div>
</nav>
帮助器看起来像这样
def is_active?(link_path)
if current_page?(link_path)
"active"
else
""
end
end
我知道我在标题视图中调用了第一个id(id = 1)。但是我不知道怎么把这个叫做其他的ids ..
如果我使用cliente_unique_path的(1)它对客户端页面很有效,但是在其他页面中出现以下错误:
没有路线匹配{:action =&gt;“cliente_unique”,:controller =&gt;“clientes”} 缺少必需的键:[:id]
有什么想法吗?
答案 0 :(得分:0)
我会在这些情况下使用jQuery。喜欢, function activate(i){ (“ul.nav li”)。removeClass(“active”); (“ul.nav li#”+ i)。addClass(“active”); }
将该代码放在application.js中。 给你所有的李项目ids。 并在每个页面中调用脚本标记中的该函数,传递要激活的li的id。 (从电话打字,原谅可读性)