2

我正在尝试使用基本的 current_page 方法来定义导航链接是否应突出显示为当前页面。

我目前没有收到任何错误,但显然没有正确定义事物,因为它没有正确使用我的 CSS。

在我的 PagesController 我有以下内容:

def current_page
  current_page = (path)
end

我在我的页面视图上使用 if 和 else 语句来尝试定义要使用的 CSS 行,如下所示:

<div id="nav">
  <ul>
    <li>
      <% if "current_page" %>
        <a href="/about" class="about-cp">About</a>
      <% else %>
        <a href="/about" class="about">About</a>
      <% end %>
    </li>
  </ul> 
</div>

我已经阅读了很多关于此的论坛,但似乎仍然无法正确解决。

4

3 回答 3

3

嗯,您的代码中有错误。有了if "current_page"您,您将永远正确,并且只会呈现第一个链接。你应该if current_page改用。

但是 rails 有一个内置的助手,current_page?正是为了这个目的而调用的:

这样做:

 <% if current_page?(path) %>
   <a href="/about" class="about-cp">About</a>
 <% else %>
   <a href="/about" class="about">About</a>
 <% end %>

有关更多信息,请参见此处current_page?

于 2012-04-21T18:27:13.757 回答
2

klump 的回答符合您的要求,但我敢于提出不同的方法:

 <div id="nav">
  <ul>
   <li>
     <%= link_to_unless_current 'About', about_path %>
   </li>
  </ul> 
 </div>

这样About,如果当前页面是,您将显示为文本,about_path并显示为任何其他页面的链接。

于 2012-04-21T18:52:49.420 回答
0
<a href="/about" class="<%= "active" if current_page?(path) %>">About</a>
于 2012-04-21T19:29:25.090 回答