【问题标题】:Active link only works for first nav link, rails活动链接仅适用于第一个导航链接,rails
【发布时间】:2014-02-16 15:58:24
【问题描述】:

我有一个 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)。但我不知道如何调用其他 id..

如果我采用 cliente_unique_path 的 (1) 它非常适合客户页面,但我在其他页面中收到以下错误:

没有路由匹配 {:action=>"cliente_unique", :controller=>"clientes"} 缺少必需的键:[:id]

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    我会在这些情况下使用 jQuery。喜欢, 函数激活(i){ ("ul.nav li").removeClass("active"); ("ul.nav li#" + i).addClass("active"); }

    将该代码放入 application.js。 为您的所有 li 项目提供 ID。 并在每个页面中在传递要激活的 li 的 id 的脚本标记中调用该函数。 (手机打字,请原谅可读性)

    【讨论】:

    • 这对我不起作用..你现在还有其他解决方案吗?@beck03076
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多