无法理解如何在RoR中对物品价格求和

1 ruby-on-rails

您好我想制作简单的购物车.我是编程的初学者.所以请帮忙.我有价格的项目,我想总结它们(数量等于一).

教职员

<h1>Summ:<%= @items.total %></h1>

模型

class Item < ActiveRecord::Base

  def total
      summ = 0
      @items.each do |item|
          summ += item.price
      end
  end

end
Run Code Online (Sandbox Code Playgroud)

怎么了.我在Item#index中有这个错误NoMethodError

Aar*_*nni 9

Rails定义了一个Enumerable::sum可以调用的方法.所以你的观点看起来像这样:

<h1>Summ: <%= @items.sum(&:price) %></h1>
Run Code Online (Sandbox Code Playgroud)

您还可以为totalOrder(或您正在使用的任何模型has_many:items)添加方法.有点像:

class Order < ActiveRecord::Base
  has_many :items

  def total
    items.sum(&:price)
  end
end
Run Code Online (Sandbox Code Playgroud)

然后你的观点:

<h1><%= @order.total %></h1>
Run Code Online (Sandbox Code Playgroud)