我有一个名为Taxon的类别列表:

Rails代码在这里:

<div id="taxonomies" class="sidebar-item">
<% @taxonomies.each do |taxonomy| %>
  <ul class="navigation-list">

      <% taxonomy.root.children.each do |taxon| %>
        <li<%= ' class="current"' if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon) %>><%= link_to taxon.name, seo_url(taxon) %></li>

            <% if @taxon.nil? %>
            <% else %>

                <% @taxon.children.each do |taxon|%>
                    <li><%= link_to taxon.name, seo_url(taxon) %></li>
                <% end %>

            <% end %>
      <% end %>
    </ul>
<% end %>
</div>


现在的问题是,如果我单击视图中的特定分类法,它将向我显示所有父母的孩子。所以...

第1类
 子孙1
 子孙2
2类
 子孙1
 子孙2
第3类
 子孙1
 子孙2

当我想要的是:
第1类
 子孙1
 子孙2
2类
第3类

Selected类别具有当前附加的CSS类。我的想法是'current%>显示LI,否则不显示任何内容。

有人知道这是否可能吗?

最佳答案

您是否可以重复使用相同的条件来添加class属性?

if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon)

因此,您将拥有:

<% taxonomy.root.children.each do |taxon| %>
<li<%= ' class="current"' if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon) %>><%= link_to taxon.name, seo_url(taxon) %></li>

    <% if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon) %>

        <% @taxon.children.each do |taxon|%>
            <li><%= link_to taxon.name, seo_url(taxon) %></li>
        <% end %>

    <% end %>
<% end %>

10-06 04:40