我有一个非常简单的形式,因为我现在真的只是在玩RoR,只是收集一些数据并将其插入数据库中,没有什么令人兴奋的基本CRUD。但是,我想在我的桌子的页脚中添加一个和字段,但我在网上找不到任何东西。这在RoR中是不可能的?看起来像一个非常简单的任务,但我确信我在Rails中的无聊无论如何都没有帮助。 :)
<tbody>
<% @labors.each do |labor| %>
<tr>
<td><%= labor.employee %></td>
<td><%= labor.item_no %></td>
<td><%= labor.customer_number %></td>
<td><%= labor.customer_name %></td>
<td><%= labor.total_labor %></td>
<td><%= labor.burden %></td>
<td><%= labor.hours %></td>
<td><%= link_to 'Show', labor %></td>
<td><%= link_to 'Edit', edit_labor_path(labor) %></td>
<td><%= link_to 'Destroy', labor, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<tr>
<td>Sum</td>
<td><%= @labors.map{|item| item.val}.reduce{0, :+} %></td>
</tr>
<% end %>
</tbody>
继续获取由','引起的语法错误。
app/views/labors/index.html.erb:35: syntax error, unexpected ',', expecting '}'
答案 0 :(得分:1)
假设您的数据位于数组@items
中并且每个项目都包含值属性“val”,那么在循环渲染项目之后,添加另一个表格行,如
<tr>
<td>Sum</td>
<td><%= @lobors.map{|item| item.total_labor}.reduce(0, :+) %></td>
</tr>
map
用于提取您想要求和的值,reduce
用于计算数组的总和。
答案 1 :(得分:1)
更改此
<td><%= @labors.map{|item| item.val}.reduce{0, :+} %></td>
到
<td><%= @labors.map{|item| item.val}.reduce(0, :+) %></td>
希望这适合你!
干杯!
答案 2 :(得分:0)
好的,所以这些是如何工作的。让我分解一下我到达那里的方式:
我的代码:
<tbody>
<% @labors.each do |labor| %>
<tr>
<td><%= labor.employee %></td>
<td><%= labor.item_no %></td>
<td><%= labor.customer_number %></td>
<td><%= labor.customer_name %></td>
<td><%= labor.total_labor %></td>
<td><%= labor.burden %></td>
<td><%= labor.hours %></td>
<td><%= link_to 'Show', labor %></td>
<td><%= link_to 'Edit', edit_labor_path(labor) %></td>
<td><%= link_to 'Destroy', labor, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<tr>
<td>Sum</td>
<td><%= @labors.map{|item| item.val}.reduce{0, :+} %></td>
</tr>
<% end %>
</tbody>
好的,原来这是@Martin建议的代码,我一直收到关于','的错误。所以@Pamio建议我把'0,:+'放在()中然后我得到一个.val错误。这实际上引导我进入解决方案。
.val必须是你想要总计的实际字段,我怀疑这是因为它在一个数组中,并且在大多数情况下没有.val的值。所以,代码最终是这样的:
<tbody>
<% @labors.each do |labor| %>
<tr>
<td><%= labor.employee %></td>
<td><%= labor.item_no %></td>
<td><%= labor.customer_number %></td>
<td><%= labor.customer_name %></td>
<td><%= labor.total_labor %></td>
<td><%= labor.burden %></td>
<td><%= labor.hours %></td>
<td><%= link_to 'Show', labor %></td>
<td><%= link_to 'Edit', edit_labor_path(labor) %></td>
<td><%= link_to 'Destroy', labor, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<h3>Sum</h3>
<div><span>Total Labor: </span><%= @labors.map{|item| item.total_labor}.reduce(0, :+) %></div>
注意item.val更改为item.total_labor我想要的实际字段名称。感谢您的见解,我很感激。
在格式化方面略有改动。我的原始帖子每次循环时都会添加一个总字段。 :) oops!