Ruby on rails 为什么我会得到';未定义的方法`>=';对于nil:NilClass';在循环中?
我有以下数据架构:Ruby on rails 为什么我会得到';未定义的方法`>=';对于nil:NilClass';在循环中?,ruby-on-rails,loops,erb,rails-activerecord,Ruby On Rails,Loops,Erb,Rails Activerecord,我有以下数据架构: :tplangroups has_many :tplans :tplans belongs_to :tplangroups :tplans has attr_accessible :favrank 我需要从每个tplan组中获取具有最高favrank的tplan的id,下面的例行程序是我试图实现这一点的方法: <% @tplangroups.each_with_index do |tplangroup, index| %>
:tplangroups has_many :tplans
:tplans belongs_to :tplangroups
:tplans has attr_accessible :favrank
我需要从每个tplan组中获取具有最高favrank的tplan的id,下面的例行程序是我试图实现这一点的方法:
<% @tplangroups.each_with_index do |tplangroup, index| %>
<% @highest_favrank = 0 %>
<% @highest_id = tplangroup.tplans[0] %>
<% tplangroup.tplans.each do |tplan| %>
<% if tplan.favrank >= @highest_favrank %>
<% @highest_favrank = tplan.favrank %>
<% @highest_id = tplan.id %>
<% end %>
<% end %>
#does stuff with tplangroup
<% end %>
有什么想法吗?我真的不知道它为什么会抛出这个错误。我知道我引用的所有属性/变量都有值,我已经测试过了。我不知道我哪里出错了,提前谢谢 错误信息非常明显:您的
tplan.favrank
为nil,Ruby无法使用=
将nil与@highest\u favrank
进行比较
您应该在尝试显示该数组之前,使用compact
,从该数组中删除nil,或者您应该找出获得nil的原因
不幸的是,我们无法告诉您,因为您没有提供显示如何创建值的代码,也没有我们可以尝试重新创建您的结构的数据
也许您的表的值为零?可能您的代码没有捕获所有条件,允许nil泄漏。是的,因此您的数据库中存在nil。此外,请研究如何使用SQL实现这一点
undefined method `>=' for nil:NilClass