Избавиться от ошибки класса Nil в Ruby
-
09-10-2019 - |
Вопрос
В настоящее время у меня есть таблица, которая разделена на 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
Любые идеи, как это исправить? Спасибо,
Решение
Похоже, одна из ваших релизов в @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
)
Не связан с StackOverflow