我的控制器中有一个@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重复。谢谢你的帮助!
答案 0 :(得分: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