我目前有一个分为4列的表:
<table id="customers">
<tr>
<th><em class='require'></em><%= Release.columns_hash['version'].human_name -%></th>
<th><em class='require'></em><%= Release.columns_hash['version'].human_name -%></th>
<th><em class='require'></em><%= Release.columns_hash['version'].human_name -%></th>
<th><em class='require'></em><%= Release.columns_hash['version'].human_name -%></th>
</tr>
<% @releases.in_groups_of(4).each do |releasesplit| %>
<tr>
<% releasesplit.each do |release| %>
<td align="center"><%= release.version %></td>
<% end %>
</tr>
<% end %>
然而,问题是每当我向表中添加另一个不能被4整除的条目时,我会收到错误:undefined method version' for nil:NilClass
任何想法如何解决这个问题? 谢谢,
答案 0 :(得分:4)
@releases
变量中的某个版本似乎是nil
。
你可以这样做:
@releases.compact.in_groups_of(4).each do ...
Array#compact
会返回原始数组的副本,并删除nil
个元素。
但是,我强烈建议您首先调查其中一个是否为零。
这不是分组问题,因为这是分组的工作方式:
irb(main):002:0> [1,2,3].each_slice(2) {|group| puts group.inspect}
[1, 2]
[3]
=> nil
(in_groups_of
只是each_slice
)