ruby - 敬畏导航: sort pages by category

标签 ruby haml jekyll

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

如果不熟悉 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/

相关文章:

ruby - 在线程内部生成线程是标准做法还是不好的做法?

php - 如何从 php 调用 ruby​​ 脚本?

ruby - 作为守护进程运行 stalker(Ruby gem)

ruby-on-rails - Haml:控制文本周围的空白

Jekyll - 将多个 URL 映射到同一个 Jekyll 文件

ruby - 启动服务器时出现 Jekyll 错误

ruby-on-rails - 不同命名空间中的关系

ruby-on-rails - 如何防止Haml在加入时转义HTML?

javascript - 使用 VueJS 上传和查看输入文件

Jekyll index.html使用3个不同的_layouts