undefined 方法 '+' for nil:NilClass in Ruby



我正在使用RubyMine创建一个网站。我在模型中进行的一个计算已不起作用。它以前工作过,但现在我收到一个NoMethodError,指出nil:NilClass 有一个未定义的方法"+">

我在"roster.rb"模型中添加了多个整数,范围排序如下:

scope :sorted, -> { select('*, (passing_yards + passing_tds + qb_rushing + coaching_staff + age + physical_tools + intellect + surrounding_talent + health + consistency) as xoi').order('xoi DESC') }
def xoi
passing_yards + passing_tds + qb_rushing + coaching_staff + age + physical_tools + intellect + surrounding_talent + health + consistency
end

我有使用这些整数的数据库条目,这些整数几天前就已经工作了,计算工作正常,数字排序准确。

我仍然可以用这些整数中的一个来定义"xoi",并且该整数将正确显示。我也可以用2+2定义"xoi",答案会在我的网页上正确显示为4。但这种计算已经失效。

显示此计算结果的html页面如下:

<% @players.each do |player| %>
<tr>
<td><%= player.xoi %></td>
<td><%= player.last_name %></td>
<td><%= player.first_name %></td>
<td><%= player.pos %></td>
<td><%= player.team %></td>
<td><%= player.passing_yards %></td>
<td><%= player.passing_tds %></td>
<td><%= player.qb_rushing %></td>
<td><%= player.coaching_staff %></td>
<td><%= player.age %></td>
<td><%= player.physical_tools %></td>
<td><%= player.intellect %></td>
<td><%= player.surrounding_talent %></td>
<td><%= player.health %></td>
<td><%= player.consistency %></td>

我一定做了一些小调整,无法恢复。版本控制对我不起作用。

就好像"+"不再适用于这个计算(但我确信我只是做错了什么)。

如果有任何见解,我将不胜感激。

我不明白为什么该方法未定义

这里定义了方法。请检查以下语句中的错误。

nil:NilClass的未定义方法"+">

问题是

passing_yards

对于该场景,可能为nil。因此,在评估def xoi

passing_yards + passing_tds + qb_rushing + coaching_staff + age + physical_tools + intellect + surrounding_talent + health + consistency

它评估为

nil + passing_tds + ...

这在ruby中是不允许的。如果你愿意,也可以在irb中检查。

> nil + 2
=> #<NoMethodError: undefined method `+' for nil:NilClass>
>  

最新更新