Ruby on Rails - 购物车 - 订单太多

时间:2015-04-08 13:14:24

标签: ruby-on-rails activerecord shopping-cart

我试图在Ruby on Rails中构建购物车应用程序。该模型如下:用户有很多交货,交货有很多order_items,产品有很多order_items。

我试图让非登录用户制作购物车,只有在他们购物后,用户必须注册或登录才能提交订单(购物车)。

因此,我在ApplicationController中帮助确定当前交付:

class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
helper_method :current_delivery


  def current_delivery
    if !session[:delivery_id].nil?
      Delivery.find(session[:delivery_id])
    else
      Delivery.new
    end      
  end
end

在oder_items控制器中,我进行了创建操作:

class OrderItemsController < ApplicationController
  def create
    @delivery = current_delivery
    @order_item = @delivery.order_items.new(order_item_params)
    @delivery.save
    session[:delivery_id] = @delivery.id
  end
 ...
end

当有人点击添加到购物车按钮时,会触发order_item的创建操作:

$(".cart-text").html("<%= escape_javascript(render 'layouts/cart_text') %>")

问题在于,当用户将order_item(点击添加到购物车按钮)添加到空购物车时,会创建多个交货(4-12)。如何只获得一个新的交付而不是多个交付?

0 个答案:

没有答案