ruby-on-rails - 如何在 Rails 中显示列的总和
问题描述
我想在我的模型 Earning 中显示列名“money”的总和。在 rails 控制台中,我可以轻松获得所需的总和Earning.sum(:money)
,并显示总和。
收益控制器.rb
def index
@earnings = Earning.sum(:money)
end
index.html.erb
<p id="notice"><%= notice %></p>
<h1>Earnings</h1>
<table>
<thead>
<tr>
<th>Money</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @earnings.each do |earning| %>
<tr>
<td><%= earning.money %></td>
<td><%= link_to 'Show', earning %></td>
<td><%= link_to 'Edit', edit_earning_path(earning) %></td>
<td><%= link_to 'Destroy', earning, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'New Earning', new_earning_path %>
它一直抛出这个错误
NoMethodError in Earnings#index
到目前为止我尝试过的
我难住了。我尝试将索引操作更改为@earnings = Earnings.sum(:money),这给了我这个错误“NameError in EarningsController#index”。我在这里也看到了类似的问题,但由于我认为问题出在我的 index.html.erb 中,因此并没有太大帮助。正如我之前所说,代码在 Rails 控制台中工作。预先感谢您的任何帮助。
解决方案
因此,您没有以正确的方式使用@earnings,在您看来,您将收益用作对象的集合,但在控制器中,@earnings 被定义为一笔钱,但您并没有使用它,如果您真的需要这笔钱,您可以设置两个实例变量,例如 @earnings = Earning.all 和第二个 @money_sum = Earnings.sum(:money),然后您可以在某处显示您的总和为 = @money_sum,然后您可以通过 @earnings 迭代创建一些你认为的linka
推荐阅读
- asp.net - Plesk 中启用 node.js 的 asp.net Web 应用程序不存在“应用程序启动文件”
- python - 如何从列表中包含的字符串中仅获取一个字符
- c# - C++ 中的序列化和 C# 中的反序列化,对于命名管道,反之亦然
- c# - 从 Razor Pages 中的库生成 URL
- postgresql - Postgresql 如何加入这些表以获得正确的输出?
- php - 使用 replit.com 和 remotemysql.com
- python - 当我只想删除一个包时,为什么 conda 想更新不相关的包?
- reactjs - 如何在 PdfTron/Pdf.js(React App)中使用 loadDocument() 函数加载在文件夹内提供路径的文档
- python - 按行划分数据帧(或numpy数组)的正确方法
- sorting - 在 Arm 装配中实现选择排序时遇到问题