Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 以编程方式生成的Spree分类单元在管理中不显示树_Ruby On Rails_Ruby_Spree_Taxonomy - Fatal编程技术网

Ruby on rails 以编程方式生成的Spree分类单元在管理中不显示树

Ruby on rails 以编程方式生成的Spree分类单元在管理中不显示树,ruby-on-rails,ruby,spree,taxonomy,Ruby On Rails,Ruby,Spree,Taxonomy,我试图在Ruby脚本(a la seeds.rb)中以编程方式生成Spree Commerce分类法。在面向客户的产品页面中会显示分类,但在管理页面中不起作用 分类法的“树”视图显示根节点,但没有子节点 在产品编辑页面上,我无法添加任何分类单元 下面是一个例子: taxonomy_stones = Spree::Taxonomy.where(:name => 'Gemstone Type').first_or_create tax_stones = Spree::Taxon.where

我试图在Ruby脚本(a la seeds.rb)中以编程方式生成Spree Commerce分类法。在面向客户的产品页面中会显示分类,但在管理页面中不起作用

  • 分类法的“树”视图显示根节点,但没有子节点
  • 在产品编辑页面上,我无法添加任何分类单元
下面是一个例子:

taxonomy_stones = Spree::Taxonomy.where(:name => 'Gemstone Type').first_or_create
tax_stones = Spree::Taxon.where(name: "Gemstone", parent: nil, taxonomy: taxonomy_stones).first_or_create
tax_diamond = Spree::Taxon.where(name: "Diamond", parent: tax_stones, taxonomy: taxonomy_stones).first_or_create
  tax_fancy_yellow = Spree::Taxon.where(name: "Fancy Yellow Diamond", parent: tax_diamond, taxonomy: taxonomy_stones).first_or_create
  tax_fancy_pink = Spree::Taxon.where(name: "Fancy Pink Diamond", parent: tax_diamond, taxonomy: taxonomy_stones).first_or_create
当我运行此操作时,数据库中会出现分类法和分类单元的条目。我能够以编程方式将产品与分类单元关联:

product_BL212.taxons << tax_diamond

product\u BL212.Taxon调用
Spree::Taxon.rebuild解决了这个问题。

我在使用代码时遇到了类似的问题

Spree::Taxonomy.find_or_create_by(name:'Brands')
Spree::Taxon.find_or_initialize_by(name:'brand_name').update(taxonomy: Spree::Taxonomy.find_by(name:'Brands'))
正在运行
Spree::Taxon.rebuild未解决该问题。我发现创建分类法也会创建一个分类单元,我必须在父列中为我创建的新分类单元使用相关分类单元的ID

所以

不得不改成

Spree::Taxon.find_or_initialize_by(name:'brand_name').update(taxonomy: Spree::Taxonomy.find_by(name:'Brands'), parent: Spree::Taxon.find_by(name:'Brands'))

Taxon.parent属性需要根对象

例如:

t=Spree::Taxonomy.create(名称:“季节”)

tt=Spree::Taxon.create(名称:“Winter”,分类法:t,父:t.root)

Spree::Taxon.find_or_initialize_by(name:'brand_name').update(taxonomy: Spree::Taxonomy.find_by(name:'Brands'), parent: Spree::Taxon.find_by(name:'Brands'))