【问题标题】:Rails show total of nested values in viewRails 在视图中显示嵌套值的总数
【发布时间】:2017-01-04 16:25:34
【问题描述】:

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

purchase_order 有很多 purchase_order_lists 和 purchase_order_lists 属于_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

在我的模型 purchase_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 的总和?

【问题讨论】:

  • @purchase_order_list = PurchaseOrderList.find(params[:ID]) 在这里看起来毫无意义。如果我真的理解您的问题,只需将其从控制器中删除即可。
  • 您好,感谢您的回答。我已经编辑了这个问题。我在控制器中添加了它,以便能够计算某个采购订单的 purchase_order_list 方法total 的总数

标签: ruby-on-rails


【解决方案1】:

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

为了解决这个问题,我改用了where

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多