in_groups_of给出未定义的方法`each_with_index'为零:NilClass

时间:2018-02-09 06:00:33

标签: ruby-on-rails

我在使用in_groups_of并获得undefined method each_with_index'时遇到问题为nil:NilClass`错误。

我在in_groups_of电话中使用了false作为第二个指标,但无济于事。

以下代码概述了我所拥有的内容。方法模型循环将始终具有3条记录,因此它可以工作。但是进度模型循环可以有1到7,这就是问题所在。如果[i]出现,我是否需要条件声明?或者我有什么遗失的东西?

<% @data.each do |data| %>
  <% data.selections.size.times do |i| %>

    <% data.methods.order(:selection_id).order("date ASC").in_groups_of(3, false)[i].each_with_index do |e, index| %>
    ...
    <% end %>

    <% data.progressions.order(:selection_id).order("date ASC").in_groups_of(7, false)[i].each_with_index do |e, index| %>
    ...
    <% end %>

  <% end %>
<% end %>

1 个答案:

答案 0 :(得分:1)

确保以下语句未返回空数组

data.progressions.order(:selection_id).order("date ASC").in_groups_of(7, false)

通常情况下,如果存在记录,则in_groups_of会返回array of arrays,如果collection(ActiveRecord::Collection)为空,则返回空array

如果它返回一个空数组,则最好使用presence条件检查该数组的if

<% if (collection = data.progressions.order(:selection_id).order("date ASC").in_groups_of(7, false)[i]).present? %>
  <% collection.each_with_index do |e, index| %>
    ...
<% end %>