【发布时间】:2015-09-06 20:23:46
【问题描述】:
我的 Rails 应用中有一个购物车。我正在尝试显示当前在用户购物车中的商品数量,并在用户添加商品时异步更新它。我在同一个控制器操作中显示(和更新)这个计数器,您可以在其中创建新的购物车项目。行为是这样的:
在视图中
<%= link_to "#{current_user.cart_items.size} Items in Cart", cart_items_path, class: "btn btn-default" %>
在控制器中
def index
@cart_item = current_user.cart_item.new # instantiate a new cart_item to be used in a form to create a new cart_item in this index action
end
因此,每次加载 View 时,current_user.cart_items.size 计数都太多了,因为 Action 正在实例化一个新的 cart_item。
我在控制台试了一下验证:
2.2.1 :022 > current_user.cart_items.size
=> 2
2.2.1 :023 > current_user.cart_items.new
=> #<CartItem id: nil, user_id: 1, product_id: nil, created_at: nil, updated_at: nil>
2.2.1 :024 > current_user.cart_items.size
=> 3
有没有什么方法可以不计算一个只被实例化且尚未保存的对象?
注意:我也用build 代替new 进行了尝试,结果相同。
【问题讨论】:
标签: ruby-on-rails ruby