同时将多个项目添加到购物车
我有以下关系:
Class CartItem belongs_to :cart belongs_to :product Class Product ( category) has_many :cart_items Class Cart has_many :cart_items
当有人将产品添加到购物车时,它会在CartItem表中使用cart.id和product.id创建一行。 我可以添加和删除产品到编辑页面上的购物车,它的工作原理。
但现在我想在同一时间向购物车添加或删除多个产品。 当客户可以输入我们想要添加/删除的号码时,我只需要输入数字字段。 但是,我没有设法这样做,因为在编辑表单中,如果我放置一个名为“number”的字段(对于每个产品),显然会出现错误,因为没有属性“number”。 我应该添加一个“field_tag”,但它怎么能起作用? 提前致谢
我在使用Rails编写的一个名为Spree的电子商务gem上工作。 这就是我们如何解决这个问题。
我们有4个型号: Variant
, Product
, Order
和LineItem
。 这些构成了我们订购系统的基础。 变体可以被认为是产品的“突变”。 假设你有一个可以有红色,绿色或蓝色的TShirt。 产品是TShirt,而颜色是变体。
变量通过LineItems链接到Orders。 LineItem对象存储: variant_id
, variant_id
的quantity
和当前价格,以防以后更改。 您不希望价格意外地改变用户!
将商品添加到购物车的逻辑只是在产品页面上带有variant_id和数量字段的表单。 这是Spree的版本 。 控制器处理该表单的操作基本上采用variant_id和quantity,并执行以下操作:
- 检查订单是否已存在
- 如果订单不存在,请创建一个订单
- 在订单上创建一个新订单项,并指定quantity和variant_id,并存储价格。
由于我们关心库存水平等等,Spree的伏都教在这周围有点复杂,但这是它的基本要点。
当用户去查看他们的购物车时,我们会向他们展示包含所有订单项和数量数字字段的表单。 那个表单看起来像这样:
结帐http://sofzh.miximages.com/ruby-on-rails/Screen Shot 2013-07-11 at 8.39.20 AM.png
生成该表单的代码有三个文件: orders/edit.html.erb
, orders/_form.html.erb
和orders/_line_item.html.erb
该表单通过提交OrdersController#update
,并且由于表单中的字段是嵌套属性,整个订单及其订单项都会适当更新。
我希望这可以帮助你!