狂欢商务:关联购物车中的订单项?

时间:2015-08-05 01:09:34

标签: ruby-on-rails spree deface

我正在写一个Spree扩展程序,允许购物车/订单中的某些商品相互关联。

A"设置"产品可以与中心石材相关联。产品。最终,会有约束强制哪些事物可以相互引用,但这并不重要。

以下是我如何更改LineItem以包含自引用:

Spree::LineItem.class_eval do

    has_one :center_stone, class_name: "LineItem", foreign_key: "setting_id"
    belongs_to :setting, class_name: "LineItem"
end

...以及相应的数据库迁移:

class AddSettingRefToLineItems < ActiveRecord::Migration
  def change
    add_reference :spree_line_items, :setting, index: true, foreign_key: true
  end
end

接下来我需要做的是修改&#34;添加到购物车&#34;在产品页面上形成表单,以便添加到购物车的商品可以与购物车中已有的商品相关联。我该怎么做?

用例示例

产品A和产品B都在我的购物车中。我正在查看产品C的页面。我想看看选项:

  • 添加到产品A
  • 添加到产品B
  • 单独添加到购物车

单击这些选项中的任何一个都会像往常一样为产品C创建Spree :: LineItem。如果单击前两个选项,我还希望产品C的line_id的lineIid在我的购物车中引用产品A的LineItem。

1 个答案:

答案 0 :(得分:0)

据发现,主要问题是:如何自定义Spree&#34;添加到卡&#34;功能

您需要customize views

Deface::Override.new(:virtual_path => 'spree/products/_cart_form',
                 :name => 'centerproduct_cart_form',
                 :replace => "<what to replace>",
                 :erb => "<with what to replace>")

这应该转到您的app/overrides/centerproduct_cart_form.rb文件(您可以更改文件名,只需确保上面代码示例中的name参数也会更改为相同的值)。

您可以通过查看视图的源代码来找出what to replacewith what to replace部分:

https://github.com/spree/spree/blob/master/frontend/app/views/spree/products/_cart_form.html.erb