Ruby on rails 定义当前页面的Rails

Ruby on rails 定义当前页面的Rails,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我试图使用一个基本的current_page方法来定义导航链接是否应该作为当前页面突出显示 我目前没有收到任何错误,但显然没有正确地定义事物,因为它没有正确地使用我的CSS 在我的页面控制器中,我有以下内容: def current_page current_page = (path) end 我在pages视图中使用if和else语句尝试定义要使用的CSS行,如下所示: <div id="nav"> <ul> <li> <

我试图使用一个基本的current_page方法来定义导航链接是否应该作为当前页面突出显示

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

在我的页面控制器中,我有以下内容:

def current_page
  current_page = (path)
end
我在pages视图中使用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>
 <% if current_page?(path) %>
   <a href="/about" class="about-cp">About</a>
 <% else %>
   <a href="/about" class="about">About</a>
 <% end %>


我已经阅读了很多关于这方面的论坛,但似乎仍然不能正确理解。

Mhh您的代码中有一个错误。使用
if“current_page”
时,您将始终获得true,并且仅呈现第一个链接。如果当前页面,则应使用

但是rails有一个内置的助手,名为
current\u page?
,正是为了这个目的:

就这样做吧:

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


有关当前页面的更多信息,请参见《代码》

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

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

这样,如果当前页面是关于路径的,则您的关于将以文本的形式出现,并作为任何其他页面上的链接出现。


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

该方法几乎肯定应该放在助手中,而不是控制器中。非常感谢您的快速响应,我现在遇到了以下错误:
未定义的局部变量或方法“path”
。你知道我如何定义路径吗?你能发布
rake routes
的输出吗?rake时我的所有路由都显示与此
GET/about(:format){:action=>“about”,:controller=>“pages”}
完全相同的格式。它们都是GET方法,带有一个动作,该动作是页面名称,并调用同一个控制器。很抱歉,我会发布它完全,但没有足够的空间在评论。希望这有帮助:)我希望你能编辑你的问题:P在GET之前应该还有一个字段,这是路径。但是您可以向
当前页面?
任何内容、url、包含操作和控制器的哈希或路径提供信息。所以
当前页面?(:action=>params[:action],:controller=>params[:controller])
将检查您正在呈现的页面(当前页面)是否是您请求的页面。lol!我知道“链接到除非”等等,但不知道“链接到除非当前”。那真是太好了!嘿,谢谢你的回答,我最初有一个类似的设置,带有基本的
链接到的
,但因为我使用的CSS tween按钮需要调用鼠标悬停状态的背景图像,所以我不确定如何将其与rails结合:)