0

我试图显示输入的所有记录的浮点数的总和,但我似乎不知道该怎么做。这是情况。我的应用程序(纯粹用于学习目的)有一个用户可以注册游泳者个人资料,并且在这样做时,可以为游泳者记录游泳。游泳属于游泳者,游泳者有很多游泳。

   // swims_controller.rb
   // SwimsController#index
   @swims = @swimmer.swims.all
   @distances = @swimmer.swims.all(:select => "distance")

在此操作的视图中,我遍历游泳以获取游泳日期和游泳距离。然后我添加了这行不起作用

<p>Total distance: <%= @distances.each { | x | x.distance.inject(:+).to_f } %></p>

我得到的错误是“5500.0:Float 的未定义方法‘注入’”(5500.0 是为该游泳者记录的第一次游泳的距离)。我使用了基于其他线程的注入(例如,如何对 Ruby 中的数字数组求和?)但很明显,我遗漏了一些东西。实际上,我可能遗漏了很多东西,因为我想将这个 #total_distance 方法放在游泳模型(swim.rb)中,但是当我尝试这样做时,我无法让控制器识别该方法我在别处读到,由于“缓存”问题,视图不应尝试访问模型中定义的方法。

任何人对此的有用指导都会有很大帮助。似乎是一件非常基本的事情,但由于某种原因,在无数次搜索查询之后,我发现关于此类问题的指导很少。谢谢!

4

2 回答 2

1

我不是那种经验,但尝试做<%= @swims.inject(0) {|num,n| 数字 + n[:距离] } %>

或者

<%= @distances.inject {|sum, n| 总和 + n } %>

我希望这会奏效。
谢谢。

于 2012-05-14T05:45:29.933 回答
0

你应该看看活动记录计算。它已经支持 sum: http ://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html

于 2012-05-14T04:52:20.863 回答