2013-12-17 87 views
1

我是Spree的新手,非常感谢您的帮助!Spree - 仅在选择类别时才显示子类别

我发现了一种让Spree在左侧导航栏上显示子类别的方法(设置config.max_level_in_taxons_menu = 4),但是在此方法中,所有子类别始终显示。见下文:

在上述例子中,我只想要显示“服装”在选择了“衬衣和T恤”。

我想我将不得不编辑base_helper.rb文件中的taxons_tree函数,但我不知道从哪里开始。

def taxons_tree(root_taxon, current_taxon, max_level = 1) 
    return '' if max_level < 1 || root_taxon.children.empty? 
    content_tag :ul do 
    root_taxon.children.map do |taxon| 
     css_class = (current_taxon && current_taxon.self_and_ancestors.include?(taxon)) ? 'active' : nil 
     content_tag :li, class: css_class do 
     link_to(taxon.name, seo_url(taxon), "class" => css_class) + 
     taxons_tree(taxon, current_taxon, max_level - 1) 
     end 
    end.join("\n").html_safe 
    end 
end 

在此先感谢!

回答

0

行 - 我想边写出来的问题,它得到了在大脑工作的齿轮,我想通了:

def taxons_tree(root_taxon, current_taxon, max_level = 1, current_level = 1) 
    return '' if max_level < 1 || root_taxon.children.empty? 
    if current_level == 1 
    content_tag :ul, class: 'widget-shadow', id: 'left-nav' do 
     root_taxon.children.map do |taxon| 
     css_class = (current_taxon && current_taxon.self_and_ancestors.include?(taxon)) ? 'active' : nil 
     content_tag :li, class: css_class do 
      link_to(taxon.name, seo_url(taxon), "class" => css_class) + 
      if current_taxon && current_taxon.self_and_ancestors.include?(taxon) 
      taxons_tree(taxon, current_taxon, max_level - 1, current_level + 1) 
      end 
     end 
     end.join("\n").html_safe 
    end 
    else 
    content_tag :ul do 
     root_taxon.children.map do |taxon| 
     css_class = (current_taxon && current_taxon.self_and_ancestors.include?(taxon)) ? 'active' : nil 
     content_tag :li, class: css_class do 
      link_to(taxon.name, seo_url(taxon), "class" => css_class) + 
      if current_taxon && current_taxon.self_and_ancestors.include?(taxon) 
      taxons_tree(taxon, current_taxon, max_level - 1, current_level + 1) 
      end 
     end 
     end.join("\n").html_safe 
    end 
    end 
end 

我不得不作出在同一时间不同的修改(根 - 高级ul必须有id和类与它关联)。有可能是一个更简单的方法来做到这一点,但它的工作原理!

无论如何,我只是使用相同的if语句来决定li是否应该主动决定是否递归调用taxons_tree函数。

我以为我会在这里留下问题。以防万一别人像我一样白痴。

相关问题