0

我有以下数据架构:

  :tplangroups has_many :tplans

  :tplans belongs_to :tplangroups

  :tplans has attr_accessible :favrank

我需要从每个 tplangroup 中获取具有最高 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 %>

但是,我不断收到以下错误:

    undefined method `>=' for nil:NilClass

有任何想法吗?我真的不知道它为什么会抛出这个错误。我知道我引用的所有属性/变量都有值,我已经测试过了。我不确定我要去哪里错了,在此先感谢!

4

1 回答 1

2

错误信息非常明显: Your tplan.favrankis nil, and Ruby can't compare nil using >=to @highest_favrank

在尝试显示它之前,您应该从该数组中删除 nil,使用compact,或者您应该弄清楚为什么会得到一个 nil。

不幸的是,我们无法告诉您,因为您没有提供显示值是如何创建的代码,也没有我们可以尝试重新创建您的结构的数据。

也许你的表有零值?也许您的代码没有捕获所有条件,从而允许 nils 泄漏。

于 2013-09-18T22:19:42.117 回答