Ruby Awestruct导航:按类别对页面排序

Ruby Awestruct导航:按类别对页面排序,ruby,haml,jekyll,awestruct,Ruby,Haml,Jekyll,Awestruct,我要打印的是一个uloflis,每个页面都包含一个给定标记(在元数据中设置)的所有页面 如果不熟悉Awestruct,它类似于Jekyll,页面元数据可以作为page.property访问,页面位于site对象中,可以使用site.pages进行迭代。每个 我想要实现的是这样的目标: Category Page Page Category Page Page 到目前为止,我只能打印页面标题 - site.pages.each do |page|

我要打印的是一个
ul
of
li
s,每个页面都包含一个给定标记(在元数据中设置)的所有页面

如果不熟悉Awestruct,它类似于Jekyll,页面元数据可以作为
page.property
访问,页面位于
site
对象中,可以使用
site.pages进行迭代。每个

我想要实现的是这样的目标:

Category
    Page
    Page
Category
    Page
    Page
到目前为止,我只能打印页面标题

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

有没有我缺少的简单解决方案?

如果我不了解您想要的,类似这样的解决方案应该可以:

%ul
  -site.pages.group_by(&:category).each do |category, pages|
    %li
      = category
      %ul
        -pages.each do |page|
          %li
            %a{href: page.url}= page.title
这用于创建键入category属性的页面数组的散列,并生成每个页面中所有页面的嵌套列表

这将包括所有页面,包括没有类别的页面,因此您可能希望首先使用以下内容筛选页面数组:


你能在传递给Haml之前重建这个结构吗?如果不改变Awestruct,我宁愿不这样做。我正在尝试在它的结构中工作,但也许我必须编写一个扩展来完成这项工作。非常感谢@matt,这正是我所需要的。
-site.pages.reject{|p| p.category.nil?}.group_by(&:category).each do |category, pages|
  ...