Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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 Rails sum方法返回未定义的_Ruby On Rails_Ruby_Ruby On Rails 4.2 - Fatal编程技术网

Ruby on rails Rails sum方法返回未定义的

Ruby on rails Rails sum方法返回未定义的,ruby-on-rails,ruby,ruby-on-rails-4.2,Ruby On Rails,Ruby,Ruby On Rails 4.2,为#生成以下错误undefined method+”,因为您的@debits_for_rate是一个对象,而不是一个数字数组 @debits\u为费率。总额(&:金额) 否则 @debits\u for\u rate.map(&:amount.inject)(:+) 这将为您获取总和。您将AR转换为数组,然后执行Ruby操作,而可以使用数据库级计算,这样做效率很低 但要解决这一特殊问题,您应该: @debits_for_rate.sum(&:amount) 请删除您的答案并使用inj

为#生成以下错误
undefined method+”,因为您的@debits_for_rate是一个对象,而不是一个数字数组

@debits\u为费率。总额(&:金额)
否则

@debits\u for\u rate.map(&:amount.inject)(:+)


这将为您获取总和。

您将AR转换为数组,然后执行Ruby操作,而可以使用数据库级计算,这样做效率很低

但要解决这一特殊问题,您应该:

@debits_for_rate.sum(&:amount) 

请删除您的答案并使用
inject
code编辑@AndreyDeineko答案。Thanks@ABPrime没有必要用
inject
编辑我的答案,因为在一个数组上进行单次遍历总是比在两个数组上进行单次遍历更有效(如这里的
map
inject
):)@AndreyDeineko:同意。同意上面的说法是无效的;缓慢的do-a-little-step-n-verify过程的子级。解决了的
 @rates.each do |rate| 
   @debits_for_rate = @debits.select{ |i| i.vatunitid == rate } 
   @debits_for_rate.count 
   @debits_for_rate.sum(:amount) 
@debits_for_rate.sum(&:amount)