【发布时间】:2016-01-18 16:01:10
【问题描述】:
我正在使用中间人的博客在一个页面上输出所有博客文章的摘要,如下所示:
<ul>
<% page_articles.each_with_index do |article, i| %>
<% unless article.data['tags'].include?('featured') %>
<li class="Project">
<h3><%= link_to article.title, article.url %></h3>
</li>
<% end %>
<% end %>
</ul>
这很好用,但我需要像这样在 3 个条目后中断:
<ul>
<li class="Project"><li>
<li class="Project"><li>
<li class="Project"><li>
</ul>
<div class="break"></div>
<ul>
<li class="Project"><li>
<li class="Project"><li>
<li class="Project"><li>
</ul>
根据研究,似乎 ruby 的 in_groups_of 似乎是要走的路,但无法使语法正常工作。这是我所拥有的:
<ul>
<% page_articles.in_groups_of(3, false).each_with_index do |article, i| %>
<% unless article.data['tags'].include?('featured') %>
<li class="Project">
<h3><%= link_to article.title, article.url %></h3>
</li>
<% end %>
<% end %>
</ul>
它返回一个undefined method 'in_groups_of'。此外,似乎除非逻辑应该在分成三组之前应用。有什么改进方法的想法吗?
【问题讨论】:
-
Enumerable#each_slice将为您执行此操作,因为您使用false作为fill_with参数。例如page-articles.each_slice(3).with_index do |article,i|