<li>仅在父级具有css class =“current”</li>时可见

时间:2009-12-04 22:33:30

标签: html ruby-on-rails css spree

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

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。我的想法是某种&lt;%if:class =&gt; '当前%&gt;显示LI,否则什么都不显示。

任何人都知道这是否可行?

2 个答案:

答案 0 :(得分:0)

难道你不能只重用相同的条件来添加类属性吗?

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 %>

答案 1 :(得分:0)

在控制器上添加即时变量。 喜欢

def blablabla
  @current_page = Category.name
  if params[:id => @current_page]
    @current = "current"
  else
    @current = ""   
  end
end

并在此处更改

<li<%= ' class="#{@current}"' if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon) %>><%= link_to taxon.name, seo_url(taxon) %></li>