Rails在视图

时间:2017-01-04 16:25:34

标签: ruby-on-rails

我正在我的应用中构建一项功能来创建采购订单。我有经典的表purchase_orders和purchase_order_lists。

purchase_order有许多purchase_order_lists和purchase_order_lists belongs_to purchase_order。外键位于purchase_orders表的PURCHASE_ORDER列上。数据库表名称是大写。

在我的purchase_orders控制器中,我有:

  def show
        @purchase_order = PurchaseOrder.find(params[:ID])
        @purchase_order_list = PurchaseOrderList.find(params[:ID])
    end

在我的模型buy_oder_list.rb

def total
        (self.UNITS * self.PRICEBUY)
end

在我看来purchase_orders/show

 <td><%= purchase_order_list.total %></td>

返回每个采购订单列表行的正确值。

然后在同一视图中显示总数:

@purchase_order_list.to_a.sum(&:total)

应显示方法total的总和,但会引发错误

Couldn't find PurchaseOrderList with 'ID'=POID-00001

因为它正在寻找采购订单清单ID中的采购订单ID。

如何修复它以返回特定采购订单的方法total的总和?

1 个答案:

答案 0 :(得分:1)

问题是我使用find,而一个采购订单有很多purchase_order_lists。

要修复我使用where代替:

@purchase_order_list = PurchaseOrderList.where(PURCHASE_ORDER: params[:ID])