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