繁体   English   中英

为什么我在do循环中得到'undefined method`> ='for nil:NilClass'?

[英]Why do I get 'undefined method `>=' for nil:NilClass' in do loop?

我有以下数据架构:

  :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

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

错误信息非常明显:您的tplan.favrank为nil,而Ruby无法使用>=@highest_favrank进行比较。

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

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

也许你的桌子有零值? 也许你的代码没有捕获每个条件,允许nils泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM