Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么我会得到';未定义的方法`>=';对于nil:NilClass';在循环中?_Ruby On Rails_Loops_Erb_Rails Activerecord - Fatal编程技术网

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