如何在 Rails 4 中显示购物车中每种产品的材料价格总和?
Posted
技术标签:
【中文标题】如何在 Rails 4 中显示购物车中每种产品的材料价格总和?【英文标题】:How do i show the sum of material prices of each product on a shopping cart in Rails 4? 【发布时间】:2018-06-08 03:21:46 【问题描述】:我用基本的购物车在 rails 4 中制作了一个网络应用程序,它显示了产品的名称、数量和价格,这就是我的问题所在。价格来源于它的材料成本,由于产品可以有多种材料,材料可以用于多种产品,所以我做了一个表,叫做product_cost。我没有计算价格字段,因为材料价格随时可能发生变化,因此产品价格也会发生变化,所以我认为它不会有生产力。
回到购物车,我需要在上面显示每种产品的价格,并为此计算该产品使用的所有材料的成本。
这是结构的简单表示:
Material Table
Name
Unit cost
Product Cost Table
Product ID
Material ID
Quantity of material
Product Table
Name
Description
我该如何处理这种情况?
【问题讨论】:
【参考方案1】:显然这是一个many-to-many
关系,所以我希望你的模型(材料、产品成本、产品)是用has_many_through 实现的,我选择 has_many_through 方式,因为你可以做类似的事情
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
我知道似乎会执行很多查询,但这是我得到的最快的解决方案,请注意我没有在模板应用程序上尝试上述代码,或者我只是在猜测你的应用程序中的关系, 希望对你有帮助。
【讨论】:
问题,在end.reduce(:+)之后,我如何访问结果? 只是回答我自己的问题,我在控制器上创建了一个辅助方法,将您提供的代码放入其中,然后它将总数返回给该方法,该方法又将其返回到我需要的地方在视图中。感谢帮助人=D 对不起,我的回复晚了,不客气 :D @onildo以上是关于如何在 Rails 4 中显示购物车中每种产品的材料价格总和?的主要内容,如果未能解决你的问题,请参考以下文章
在 Shopify 中,如何通过 url 将不同数量的多个产品添加到购物车
未在商店页面显示的产品的简短描述(archive-product.php)
Ruby on Rails 购物车错误“ActiveRecord_Associations_CollectionProxy”