我有一个合同模型,其中有一个名为" totalAward"的字段。在我的index.html.erb视图中,我有以下代码:
<p> Total Award Amount: <td><%= number_to_currency(Contract.sum('awardAmount')) %></td> </p>
我相当肯定在视图中进行数据库调用对我来说不是最佳做法,但我不知道如何在控制器或模型中以我的方式执行此操作可以在视图中呈现它。有人可以帮助我如何在控制器或模型中调用数据库吗?
谢谢!
答案 0 :(得分:2)
来自控制器的实例变量(@contracts
)将允许您访问模型的属性。我相信你想使用ActiveRecord的sum方法。以下是您在视图中使用它的方法:
<%= @contracts.sum(:totalAward) %>
这样,您就不会在视图中查询数据库。但您可以访问控制器中的实例变量(@contracts),该变量包含所有合同的集合。
答案 1 :(得分:1)
继Wali Ali
之后,您最好坚持MVC programming pattern(Rails的基础)。这意味着您需要在controller
和models
我会使用instance method:
#app/models/contract.rb
Class Contract < ActiveRecord::Base
def total
sum(:totalAward)
end
end
这将允许您执行以下操作:
#app/controllers/contracts_controller.rb
Class ContractsController < ApplicationController
def index
@contracts = Contract.all #-> @contracts.total for all
@contracts = Contract.where(some: value) #-> @contracts.total for these items
end
end