gpt4 book ai didi

ruby-on-rails-3 - rails 计算小计和总计的方法

转载 作者:行者123 更新时间:2023-12-04 07:04:17 24 4
gpt4 key购买 nike

上下文:我有 2 个模型 Order 和 Item。

我想根据 item.quantity * item.price 计算项目小计
现在这是在 View 中完成的(但不是合适的地方)。

<%= number_to_currency(item.quantity * item.price) %>

我还需要计算订单总额,但我被卡住了。我没有任何专栏。
最好的方法是什么?使用模型?帮助者还是观察者?

现在我设法通过订单助手进行小计工作
def item_subtotal(item)
item_subtotal = item.quantity * item.price
end

工作解决方案:

元素型号
def subtotal
price * quantity
end

在 View 中渲染 <%= item.subtotal %>
订货型号
def total_price
total_price = items.inject(0) { |sum, p| sum + p.subtotal }
end

订单#show view render <%= number_to_currency(@order.total_price) %>

最佳答案

在您的 Item 模型上,您可以添加一个小计方法:

def subtotal
quantity * price
end

假设您将 Order 模型作为与 Item 的 has_many 关系,您可以 map用于获取 Order 模型上的价格列表的集合:
def subtotals
items.map do |i| i.subtotal end
end

因为您在 Rails 环境中运行,所以您可以使用 activesupport sum获取订单模型总数的方法:
def total
subtotals.sum
end

或者,如果您更喜欢将它们放在一起:
def total
items.map do |i| i.subtotal end.sum
end

然后,您可以在 View 中使用 Item 的小计和 Order 的总计。

编辑: View 可能如下所示:
<% for item in @order.items %> <%= item.price %><br/><% end %>
<%= @order.total %>

关于ruby-on-rails-3 - rails 计算小计和总计的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com