【问题标题】:Middleman loop through files in data folder中间人循环遍历数据文件夹中的文件
【发布时间】:2017-12-28 19:15:46
【问题描述】:

我正在尝试找出正确的语法来调用/data 文件夹中的一系列文件。

例如,我在/data 中有几个文件,每个文件的格式为article1.ymlarticle2.yml 等。如何在我的模板中循环访问它们?我认为最直接的方法是调用文件名中的数字增量,如下所示:

<% data.article-[1,2,3].each do |article| %> <p><<%= article.title %></p> <% end %>

我看到其他人问similar 问题,但没有找到一个很好的示例来查看循环遍历所有可用文件,或者像我的示例中那样循环遍历数字的增量。

【问题讨论】:

    标签: ruby middleman middleman-4


    【解决方案1】:

    @Anthonytkim 他们在数据的文件夹中吗?即/data/article/article1.yml?如果是这样,只需抓住它们,试试这个:

    <% data.article.each do |id, article| %>
    ... do stuff ...
    <% end %>
    

    如果只抓取几个项目,请尝试使用 first() 语法:

    <% data.article.first(7).each do |id, article| %>
    ... do stuff ...
    <% end %>
    

    如果你想从中间抓取一个范围,你可以结合 first() 和 drop()。例如,如果我想要第 5、6 和 7 项:

    <% data.article.first(7).drop(4).each do |id, article| %>
    ... do stuff ...
    <% end %>
    

    如果你想以相反的顺序输出它们,试试这个(你也可以结合 first() 和 drop() 语法):

    <% data.article.reverse_each do |id, article| %>
    ... do stuff ...
    <% end %>
    

    【讨论】:

    • 这不仅让我找到了正确的方向,而且还帮助我解决了另一个中间人项目中的一个问题,我试图在该项目中获得第一篇(最近的)博客文章。感谢您的写作!!
    【解决方案2】:

    使用 Middleman 4.3.2,我能够像这样遍历数据文件夹中的多个文件:

    <% data.article.each do |article| %>
      <p><%= data.article.fetch(article[0]).title %></p>
    <% end %>
    

    在上面的代码中,article 设置为某个数组,例如:['article_name', '#'],所以我能够抓取数组中的第一项来获取特定的文章数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 2014-04-24
      • 1970-01-01
      相关资源
      最近更新 更多