在每个“每个执行”循环中在 Rails 中进行基本数学运算并得到总和
Posted
技术标签:
【中文标题】在每个“每个执行”循环中在 Rails 中进行基本数学运算并得到总和【英文标题】:Doing basic math in Rails within each "each do" loop and getting the sum 【发布时间】:2013-11-09 01:41:28 【问题描述】:Rails 新手!我有与活动相关的产品。每个@product 都有一个与之关联的 .price 和 .orders_count。
我想要做的是将每个@product 的 .price 与 .orders_count 相乘,然后将它们全部相加以获得@campaign 的总成本。
刚接触 Rails,不知道如何编写语法,并在视图中看到以下内容。这是第一部分,但最后并没有将它们全部加起来。感谢您的帮助!
<% @products.each do |p| %>
<% if p.orders_count? %>
<%= (number_to_currency((p.price) * p.orders_count)) %>
<% end %>
<% end %>
【问题讨论】:
不要在视图中这样做。 【参考方案1】:尝试设置一个变量来跟踪所有产品的总和,并在每次循环中将产品添加到其中。试试这个:
<% sum = 0 %>
<% @products.each do |p| %>
<% if p.orders_count? %>
<% product = (number_to_currency((p.price) * p.orders_count)) %>
<% sum += product %>
<%= product %>
<% end %>
<% end %>
The sum is: <%= sum %>
【讨论】:
这太棒了!我还有一个问题,例如 p.price 为 9.99 美元,除非转换为正确的数字,否则我不想工作。我知道 number_to_current(p.price) 会将价值转化为金钱,但是将其转化为十进制数字的帮手是什么? 我这样做了,这样理想吗? number_to_precision 是您正在寻找的方法。通常,您会希望在视图之外执行您的逻辑,但为此目的,IMO 完全可以。 好主意。我很感激!以上是关于在每个“每个执行”循环中在 Rails 中进行基本数学运算并得到总和的主要内容,如果未能解决你的问题,请参考以下文章
在 for 循环中在 django admin 中创建另一个模型对象