定义Current_page的Rails

时间:2012-04-21 18:22:59

标签: ruby-on-rails ruby-on-rails-3

我正在尝试使用基本的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>

我已经阅读了不少论坛,但似乎仍然无法做到正确。

3 个答案:

答案 0 :(得分: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?

的详情,请参阅here

答案 1 :(得分:2)

klump的答案符合你的要求,但我敢提出一个不同的方法:

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

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

答案 2 :(得分:0)

<a href="/about" class="<%= "active" if current_page?(path) %>">About</a>