活动链接仅适用于第一个导航链接,rails

时间:2014-01-25 16:50:26

标签: html ruby-on-rails ruby-on-rails-4

我有一个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]

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我会在这些情况下使用jQuery。喜欢, function activate(i){ (“ul.nav li”)。removeClass(“active”); (“ul.nav li#”+ i)。addClass(“active”); }

将该代码放在application.js中。 给你所有的李项目ids。 并在每个页面中调用脚本标记中的该函数,传递要激活的li的id。 (从电话打字,原谅可读性)