【发布时间】:2014-05-04 13:38:42
【问题描述】:
我对 Rails 还很陌生,到目前为止,我正在尝试计算订单总数,但运气不佳。我没有篮子或购物车模型,而是将这些物品放在篮子会话中。我想在创建订单之前在购物篮中的产品视图中显示总价。
我有一个 Order 模型、一个 Product 模型和一个 Order_Product 模型。
在我的订单模型中,我有以下关系:
has_many :order_products
has_many :products, through: :order_products
在我的产品模型中,我有以下关系:
has_many :order_products
has_many :orders, through: :order_products
在我的 Order_Product 模型中,我有以下关系:
belongs_to :order
belongs_to :product
在我的订单模型中,我有以下方法:
def total
products.sum(&:price)
end
在我看来:
<%= @order.total%>
我有一个带有以下内容的篮子控制器:
def create
product = Product.find(params[:product_id])
basket.add(product.id)
flash[:success] = "Product added to basket"
redirect_to product_path(product)
end
还有一个带有这个的订单控制器:
def new
@order = Order.new
basket.each do |item_id|
@order.order_products.build(product: Product.find(item_id))
end
end
这是我的应用程序控制器中的购物篮会话:
def basket
session[:basket] ||= Set.new
end
没有错误被抛出,但视图中呈现的总数为“0”,尽管订单中有项目。由于我不知道该怎么做,有人可以帮忙吗?
非常感谢
【问题讨论】:
-
您在 Rails 控制台中尝试过吗?如果不是先尝试那里,调试..
-
我不确定如何在控制台中调试,但是当我在视图中使用调试方法时,它给出的只是这个“--- 0 ...”它只是在之前添加了破折号和点在零之后。
-
Ok.. 就在你的项目根目录中.. 输入
rails c...试试Order.all.. 然后Order.first.products.sum(&:price)等等,,, 这是你应该首先调试代码的方式... -
价格属性的类型是什么?
-
好吧..因为您处于开发模式(当您以 rails c 启动控制台时).. 可能是您的
products表是空的.. 输出是什么Product.all.size的?
标签: ruby-on-rails ruby-on-rails-4