Rails -如何计算有条件视图中的平均值



我在控制器中设置了一个@shirts变量,它是控制器中特定类别(所以它是@shirts = @category.shirts)的所有产品的数组。

那么在我看来,我希望能够根据特定条件从@shirts中计算出特定衬衫的平均价格。

因此,例如,计算所有颜色为红色,尺寸为小的衬衫的平均价格。

我是rails的新手,所以我不确定我是否采取了正确的方法。现在在我的视图中有:

<%= @shirts.average_price("Red","Small") %>

在我的模型中:

def average_price(color, size)
    self.class.average(:price).where(color: color, size: size)
end

现在我得到:

undefined method `average_price'

且不说,这是最好的方法吗?显然,有许多尺寸和颜色的组合,我想在一个表格中显示它们,并计算每种组合的平均价格。做这件事的更DRY的方法是什么?

现在我正在手动定义表行,并试图在size &每一行的颜色,但是HTMl变得重复。谢谢你的帮助!

试试这个:

def self.average_for(size, color)
  where(color: color, size: size).average(:price)
end

你可以这样使用:

@shirts.average_for('small','red')

你的@shirts不应该是一个数组,而是一个关系:

class Category...
  has_many :products # or shirts in your case

最新更新