循环的和值

时间:2009-11-18 21:43:13

标签: ruby-on-rails sum math

<% @pid = item.producto_id %>
<br/>

Producto: <%= Producto.find_by_id(@pid) %><br/>
Costo de Compra: <%= @costo_de_compra = Producto.find(:all, :conditions => "id = '#{@pid}'").*.costo_de_compra %><br/>
Precio de venta: <%= @precio_de_venta = item.precio_de_venta %><br/>
Utilidad de este producto: <%= @precio_de_venta - @costo_de_compra %><br/><br/>
<% end %>

在我的控制器里我有=

@ventas_ocurridas_en_este_periodo = Venta.find(:all, :conditions => ['created_at >= ? and created_at <= ?', Date.today.beginning_of_month, Date.tomorrow])

当我循环并从最初不可用的项中获取值时,如何将从此循环中产生的所有值汇总为集中总数?

我也无法进行@precio_de_venta的操作 - @costo_de_compra ...关于数组的事情。

1 个答案:

答案 0 :(得分:5)

我发现您的代码有几个问题。首先,您应该避免直接处理id列。毕竟,这就是您将所有belongs_tohas_many关系放入模型的原因。例如,您调用item的是venta或sell对象,它是belongs_to Product,因为它包含一个名为product_id的列。因此,您可以使用

item.product

而不是

@pid = item.producto_id
Product.find_by_id(@pid)

更不用说find_by_id只能由常规find替换。

为了添加和查找总计,我建议您查看inject ruby​​函数。

@costo_de_compra是一个数组,因为它来自find(:all)而不是find(:first)。我不确定你.*.做了什么。