以编程方式生成的 Spree Taxons 未在 Admin 中显示树
Programmatically generated Spree Taxons not showing tree in Admin
我正在尝试在 Ruby 脚本(a la seeds.rb)中以编程方式生成 Spree Commerce 分类法。在面向客户的产品页面中会出现分类单元,但它们在管理页面中不起作用。
- 分类法的 "tree" 视图显示根节点,但没有子节点
- 在产品编辑页面上,我无法添加任何我的 Taxons
这是一个例子:
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
我猜测我的 Taxon 创建代码在某些方面不完整或不正确,但我不确定是怎么回事。任何更熟悉 Spree 内部结构的人都可以提供正确执行此操作的示例吗?
进一步观察
我使用管理员 UI 创建样本分类法并将数据库条目与我生成的条目进行比较。 name
和 permalink
中的 spree_taxons
字段对于我生成的 Taxons 是空白的,但不是 Spree 创建的 Taxons。当我为根节点和两个示例子节点手动填充一些值时,taxonomy/taxons 仍然无法在 Admin 中正常工作。
当 spree_taxons_translations
拥有所需信息时,在 spree_taxons
中填充这些值是否重要?
如果是这样,我如何让 Spree 正确填充这些字段的值?
添加 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'))
必须更改为
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(name: "Season")
tt = Spree::Taxon.create(name: "Winter", taxonomy: t, parent: t.root)
我正在尝试在 Ruby 脚本(a la seeds.rb)中以编程方式生成 Spree Commerce 分类法。在面向客户的产品页面中会出现分类单元,但它们在管理页面中不起作用。
- 分类法的 "tree" 视图显示根节点,但没有子节点
- 在产品编辑页面上,我无法添加任何我的 Taxons
这是一个例子:
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
我猜测我的 Taxon 创建代码在某些方面不完整或不正确,但我不确定是怎么回事。任何更熟悉 Spree 内部结构的人都可以提供正确执行此操作的示例吗?
进一步观察
我使用管理员 UI 创建样本分类法并将数据库条目与我生成的条目进行比较。 name
和 permalink
中的 spree_taxons
字段对于我生成的 Taxons 是空白的,但不是 Spree 创建的 Taxons。当我为根节点和两个示例子节点手动填充一些值时,taxonomy/taxons 仍然无法在 Admin 中正常工作。
当 spree_taxons_translations
拥有所需信息时,在 spree_taxons
中填充这些值是否重要?
如果是这样,我如何让 Spree 正确填充这些字段的值?
添加 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'))
必须更改为
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(name: "Season")
tt = Spree::Taxon.create(name: "Winter", taxonomy: t, parent: t.root)