2

我要打印的是一个uls li,每个包含具有给定标签的所有页面(在元数据中设置)

如果不熟悉Awestruct,它类似于Jekyll,页面元数据可以访问为page.property,页面在一个site对象中,并且可以迭代site.pages.each

我想要实现的是如下所示:

Category
    Page
    Page
Category
    Page
    Page

这是我到目前为止所拥有的,我只能打印页面标题。

- site.pages.each do |page|
            %li
              %a{ :href => page.url}= page.title

我缺少一个简单的解决方案吗?

4

1 回答 1

2

如果我理解你想要什么,这样的事情应该可以工作:

%ul
  -site.pages.group_by(&:category).each do |category, pages|
    %li
      = category
      %ul
        -pages.each do |page|
          %li
            %a{href: page.url}= page.title

这用于group_by创建以类别属性为键的页面数组的哈希,并生成每个页面中所有页面的嵌套列表。

这将包括所有页面,包括没有类别的页面,因此您可能需要先过滤 pages 数组reject

-site.pages.reject{|p| p.category.nil?}.group_by(&:category).each do |category, pages|
  ...
于 2013-01-22T17:10:18.913 回答