2013-06-05 38 views
0

控制器搜索最小,最大和平均价格栏

def show 
     @product = Product.find(params[:id]) 

     respond_to do |format| 
      format.html # show.html.erb 
      format.json { render json: @product } 
     end 
end 

查看

<% @product.compoFathers.each do |compo| %> 
    <% compo.productSon.suppliers.each do |sonSuppl| %> 
     <%= sonSuppl.price %> 
    <% end %> 
<% end %> 

我找最小值,平均值和最高价格。

请谢谢。

回答

0

试试这个代码片段: -

<% average = minimum = maximum = total_price = count = 0 %>  
<% @product.compoFathers.each do |compo| %> 
    <% compo.productSon.suppliers.each do |sonSuppl| %> 
     <%= sonSuppl.price %> 
     <% count +=1 
      total_price += sonSuppl.price 
      minimum = sonSuppl.price if minumum == 0 
      maximum = sonSuppl.price if minumum == 0     
      if (sonSuppl.price > minimum) 
       if (sonSuppl.price > maximum) 
        maximum = sonSuppl.price 
       end 
      else 
       minimum = sonSuppl.price  # Previously it is minumum - 
      end 
     %>    
    <% end %> 
<% end %>  
Average = <%=average = total_price/count %> 
Maximum = <%=maximum %> 
Minimum = <%=minumum %> 
+2

你真的在做视图吗? – apneadiving

+0

错误:未定义的局部变量或方法'最小' – fredhouse

+0

更新在该咒语中,PLZ交叉检查它。如果执行代码时出错,请告诉我。 – Rubyist

1

你应该使用dedicated database queries

Product.average("price") 
Product.maximum("price") 
Product.minimum("price") 

的原因是:

  • 经过优化

  • 你可能迟早需要分页,所以你不应该需要加载所有的数据来获取这些信息

+0

将它们组合成单个查询会更快,不是吗? –

+0

这些查询速度非常快,我怀疑你可以将它们合并为一个。如果是这样,我很好奇 – apneadiving

+0

如何同意,这就是为什么我的第一点(优化)不够好,这是分页问题进入游戏的地方。 – apneadiving

相关问题