Middleman循环遍历数据文件夹中的文件

时间:2017-07-22 22:03:34

标签: ruby middleman middleman-4

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

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

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

我已经看到其他人问过similar个问题,但是找不到一个很好的例子可以循环浏览所有可用文件,或者像我的示例循环中通过增加数字一样。

2 个答案:

答案 0 :(得分: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 %>

答案 1 :(得分:0)

使用Middleman 4.3.2,我可以遍历数据文件夹中的多个文件,如下所示:

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

在上面的代码中,article被设置为某个数组,就像这样:['article_name', '#'],因此我能够抓取数组中的第一项来获取特定的文章数据。