Ruby on rails 在Rails中,向表中添加总和的正确方法是什么?
我正在显示一个HTML表中具有Ruby on rails 在Rails中,向表中添加总和的正确方法是什么?,ruby-on-rails,activerecord,sum,Ruby On Rails,Activerecord,Sum,我正在显示一个HTML表中具有price属性的项目列表 获取总价格的正确方法是什么?添加表的末尾(计算应在哪里进行) 我能想到3种明显的方法,但我不知道哪一种是最“正畸的” 1-在控制器中 @items = Item.all @item_total = @items.sum(:price) 我只需在最后一行显示@item\u total <%= @items.sum(:price) %> <%= @items.inject(0){|s, e| s + e.price} %&
price
属性的项目列表
获取总价格的正确方法是什么?添加表的末尾(计算应在哪里进行)
我能想到3种明显的方法,但我不知道哪一种是最“正畸的”
1-在控制器中
@items = Item.all
@item_total = @items.sum(:price)
我只需在最后一行显示@item\u total
<%= @items.sum(:price) %>
<%= @items.inject(0){|s, e| s + e.price} %>
2-在视图中,在最后一行
<%= @items.sum(:price) %>
<%= @items.inject(0){|s, e| s + e.price} %>
但我不确定在视图中这样做是否合适(它可以工作,但可以吗?)
3-在视图中,将其添加到最后一行
<%= @items.sum(:price) %>
<%= @items.inject(0){|s, e| s + e.price} %>
但在视图中添加这种逻辑是不对的
那么哪一个是正确的呢?还是我错过了另一条路?试试这条路
# In your controller write
@item_total = Item.sum(:price)
和@item\u total
在您的视图中使用
更新
如果您使用类似于索引的操作,那么您可以这样做
@items = Item.all
@item_total = @items.sum(:price)
但是,如果您只想item_total
,那么就不要传递两个查询,以获得您想要的总和
@item_total = Item.sum(:price)
这样试试
# In your controller write
@item_total = Item.sum(:price)
和@item\u total
在您的视图中使用
更新
如果您使用类似于索引的操作,那么您可以这样做
@items = Item.all
@item_total = @items.sum(:price)
但是,如果您只想item_total
,那么就不要传递两个查询,以获得您想要的总和
@item_total = Item.sum(:price)
您应该使用第一个选项,因为视图应该包含最少的代码。
因此,只在控制器中使用您的代码。您应该使用第一个选项,因为视图应该包含最少的代码。
因此,仅在控制器中使用代码。@items=Item.all
#这是数组#和,计算是在Ruby中完成的。通常很慢
@项目总数(:价格)
鉴于
@items=Item.all
#这是数组#和,计算是在Ruby中完成的。通常很慢
@项目总数(:价格)
鉴于
总是希望减少从数据库获取数据所需的查询数。。。。
您有两个选项来获取数据
@items=Item.all
@项目总数=@items.sum(:价格)
这不会运行,因为应该有&:price而不是:price…如果由于不支持ARel而不鼓励使用这种风格的代码,那么情况就更糟了
因此,根据我的要求,您应该使用的代码
@items=Item.scoped
@项目总数=@items.pull(:price)。总和(:price)
好处是@item是一个ARel对象,可以用于进一步的计算…减少从数据库获取数据所需的查询数量总是可取的。。。。
您有两个选项来获取数据
@items=Item.all
@项目总数=@items.sum(:价格)
这不会运行,因为应该有&:price而不是:price…如果由于不支持ARel而不鼓励使用这种风格的代码,那么情况就更糟了
因此,根据我的要求,您应该使用的代码
@items=Item.scoped
@项目总数=@items.pull(:price)。总和(:price)
好处是@item是ARel对象,可以用于进一步的计算…您可以尝试以下代码:
Sum Dolars: <%= @customer_reports.sum(&:mount) %>
Sum Dolars:
您可以尝试以下代码:
Sum Dolars: <%= @customer_reports.sum(&:mount) %>
Sum Dolars:
请使用良好的SO代码(缺少空格)修复您的帖子请使用良好的SO代码(缺少空格)修复您的帖子