ruby 如何使用Rails类方法sort_by

bbmckpt7  于 11个月前  发布在  Ruby
关注(0)|答案(1)|浏览(98)

我尝试使用类方法对示例进行排名:

@sorted_datsk_hpe = all_datsk_hpe.sort_by { |hpe| Hpe.datsk_point_count(hpe) }

字符串
这让我想到了这里

def self.datsk_point_count(hpe)
    points = 0
    if hpe.gen_ac != ""
      if hpe.gen_aa != nil
        points += hpe.gen_aa.to_i * hpe.gen_acd
      else
        points += hpe.gen_amc.to_i * hpe.gen_acd
      end
    else
      (1..10).each do |num|
        if hpe["ad_c_#{num}"] != ""
          if hpe["ad_c_#{num}_available"] != nil
            points += hpe["ad_c_#{num}_available"].to_i * hpe["ad_c_#{num}_discount"]
          else
            points += hpe["ad_c_#{num}_max_capacity"].to_i * hpe["ad_c_#{num}_discount"]
          end
        end
      end
    end
    points
  end


这给了我

TypeError: String can't be coerced into Integer
    from app/models/hpe.rb:420:in `+'
    from app/models/hpe.rb:420:in `datsk_point_count'
    from (irb):30:in `block in irb_binding'
    from (irb):30:in `sort_by'
    from (irb):30


但是如果我用一个单独的示例运行类方法,它就能工作,所以我一定是做错了sort_by?

g0czyy6m

g0czyy6m1#

代码是正确的,我只是不知道模型代码更改需要重新启动控制台,类似于修改JavaScript等时需要刷新页面。
这可能不完全准确,因为我是新手,但重新启动控制台解决了这个问题。

相关问题