Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails 4中的购物车上显示每个产品的材料价格总和?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何在Rails 4中的购物车上显示每个产品的材料价格总和?

Ruby on rails 如何在Rails 4中的购物车上显示每个产品的材料价格总和?,ruby-on-rails,Ruby On Rails,我在rails 4中用基本购物车制作了一个web应用程序,它显示了产品的名称、数量和价格,这就是我的问题所在。价格来自其材料的成本,由于产品可以有许多材料,并且材料可以用于许多产品,我制作了一个名为product_cost的表格。我没有计算出的价格字段,因为材料价格随时都可能发生变化,因此产品价格也会发生变化,所以我认为这不会产生效益 回到购物车,我需要显示每个产品的价格,并为此计算该产品使用的所有材料的成本 以下是结构的简单表示: Material Table Name

我在rails 4中用基本购物车制作了一个web应用程序,它显示了产品的名称、数量和价格,这就是我的问题所在。价格来自其材料的成本,由于产品可以有许多材料,并且材料可以用于许多产品,我制作了一个名为product_cost的表格。我没有计算出的价格字段,因为材料价格随时都可能发生变化,因此产品价格也会发生变化,所以我认为这不会产生效益

回到购物车,我需要显示每个产品的价格,并为此计算该产品使用的所有材料的成本

以下是结构的简单表示:

    Material Table
      Name
      Unit cost

    Product Cost Table
      Product ID
      Material ID
      Quantity of material

    Product Table
      Name
      Description

我该如何处理这种情况?

显然这是一种多对多的关系,所以我希望您的模型(材料、产品成本、产品)是通过实现的,我选择通过多种方式实现的,因为您将能够

p = Product.find(1)
product_cost_records = p.product_cost # retrieve array of active-records of the bridge table between product and material
product_cost_records.map do |record|
  record.material.unit * record.quantity # (record.material) gets Material record associated to this bridge record
end.reduce(:+) # map will put the multiplication of (quantity * Unit) into an array then reduce will sum them up

我知道似乎会执行很多查询,但这是我得到的最快的解决方案,请注意,我没有在模板应用程序上尝试上述代码,或者我只是在猜测应用程序中的关系,希望这对您有所帮助。

问题,结束后。减少(:+),我如何访问结果?回答我自己的问题,我在我的控制器上创建了一个helper方法,将您提供的代码放入其中,它将总数返回给该方法,该方法反过来将其返回到视图中需要它的位置。谢谢你的帮助,谢谢我迟来的回复,欢迎你:D@onildo