【发布时间】:2012-07-26 17:58:58
【问题描述】:
我正在尝试以三行的形式呈现大量内容。但是,我不确定如何使用 Ruby 确定元素的当前位置。这就是我所拥有的:
<% Animals.each do | animal | %>
<%= animal.species %>
<% end %>
我希望能够添加一个<BR>,或者如果我在渲染一张桌子时,每次我们击中集合中的第三只动物时,</TR><TR>。当然,如果元素的数量nE 不能被三整除,那么该表的格式就会不正确。我想通过在迭代后进行一些检查,我可以关闭它。
但是有没有办法获取在Array.each 方法中被迭代的元素的索引?我有强烈的预感,我可以做到以下几点:
<table>
<% Animals.each do | animal | %>
<% if Animals.find_index(animal) / 3 == 0 %>
<tr>
<% end %>
<td><%= animal.species %></td>
<% if Animals.find_index(animal) / 3 == 2 %>
</tr>
<% end %>
</table>
我唯一的事情是 Animal 是 ActiveRecord::Base 的子类,所以我不确定(还没有看过)这是否会很好地扩展,更不用说每次调用 find_index 是否会一种超级密集的方法。欢迎提出任何建议。
【问题讨论】:
-
我正在使用 Ruby 1.9.3,根据apidock.com/ruby/Enumerable/Enumerator/each_with_index,该方法在该版本中不可用。但是,这本来可以完成工作!
-
该方法可用。它只是moved 到
Enumerable的不同部分,并且由于Array继承自它,该方法仍然可用于Array。
标签: ruby arrays ruby-on-rails-3 ruby-on-rails-3.1 each