我试图打印的是ul
的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
我缺少一个简单的解决方案吗?
最佳答案
如果我明白你想要什么,像这样的东西应该有效:
%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
创建以类别属性为键的页面数组的哈希值,并生成每个页面中所有页面的嵌套列表。
这将包括所有页面,包括没有类别的页面,因此您可能需要首先使用 reject
过滤页面数组:
-site.pages.reject{|p| p.category.nil?}.group_by(&:category).each do |category, pages|
...
关于ruby - 敬畏导航: sort pages by category,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14450699/