0

我正在尝试class="current"在第一个导航中添加一个到当前页面<li>。所以 html 应该看起来像 <li id="nav-home" class="current">但仅限于当前页面。

<% subjects.each do |subject| %>
  <li id="nav-<%= subject.name %>" >
    <a <%= link_to(subject.name, :action => 'show') %></a>
    <ul>
    <% subject.pages.visible.sorted.each do |page| %>
      <li ><%= link_to(page.name, :action => 'show', :id => page.permalink) %></li>
    </ul>   
  <% end %>
<% end %>
4

2 回答 2

2

您可以使用current_page?来检查您链接到的页面是否是当前页面。

<li id="nav-<%= subject.name %>" class="<%= current_page?( page_i_am_linking_to ) ? 'current' : '' %>" >

这会将类设置为“当前”或将其留空。

我真的不明白你是如何建立你的链接/链接到什么的,这就是我使用“page_i_am_linking_to”的原因。您需要用有效的东西替换它。

另请参阅Rails API

于 2012-04-16T13:32:50.547 回答
0

您希望将一个实例变量@current_page_id设置为您呈现的页面,然后只需将该类添加到您想要拥有它的元素中,就像这样(我选择将它放在列表元素上):

<% subjects.each do |subject| %>
<li id="nav-<%= subject.name %>" >
    <a <%= link_to(subject.name, :action => 'show') %> </a>
 <ul>
<% subject.pages.visible.sorted.each do |page| %>
 <li class="<%= @current_page_id == page.id ? 'current' : '' %>"><%= link_to(page.name, :action => 'show', :id => page.permalink) %></li>
 </ul>

<% end %>

如果你想把它放在链接上:

<li ><%= link_to(page.name, :action => 'show', :id => page.permalink, :class => @current_page_id == page.id ? 'current' : '') %></li>
于 2012-04-16T13:36:04.260 回答