0

我在我的控制器中设置了一个@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'

除此之外,这是最好的方法吗?显然有许多尺寸和颜色的组合,我想将它们全部显示在一个表格中,计算每种组合的平均价格。这样做的更干燥的方式是什么?

现在我正在手动定义表格行并尝试为每行传递大小和颜色的条件,但 HTMl 会重复。谢谢你的帮助!

4

1 回答 1

1

尝试这个:

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
于 2013-05-18T01:39:52.723 回答