Избавление от ошибки нулевого класса в Ruby - PullRequest
0 голосов
/ 07 декабря 2010

В настоящее время у меня есть таблица, которая разбита на 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

Есть идеи, как это исправить?Спасибо,

1 Ответ

4 голосов
/ 07 декабря 2010

Кажется, что один из ваших выпусков в переменной @releases равен nil.

Вы можете сделать это: @releases.compact.in_groups_of(4).each do ...

Array#compact возвращает копию исходного массивас удалением nil элементов.

Тем не менее, я настоятельно рекомендую вам выяснить, почему один из них в первую очередь равен nil.

Это не проблема группировки, так как именно такработает:

irb(main):002:0> [1,2,3].each_slice(2) {|group| puts group.inspect}
[1, 2]
[3]
=> nil

(in_groups_of это просто псевдоним ActiveSupport для each_slice)

...