如何使用Active Admin(formatastic)按父级对复选框进行分组

时间:2012-10-19 09:36:34

标签: ruby-on-rails activeadmin formtastic

这是类别模型。类别可以属于另一个类别。

class Category < ActiveRecord::Base
  attr_accessible :title, :parent_id

  has_and_belongs_to_many :products, :join_table => :products_categories

  belongs_to :parent, :foreign_key => "parent_id", :class_name => "Category"
  has_many :categories, :foreign_key => "parent_id", :class_name => "Category"
end

这是产品型号:

class Product < ActiveRecord::Base
  attr_accessible :comment, location_id, :category_ids
  has_and_belongs_to_many :categories, :join_table => :products_categories
  belongs_to :location
end

在产品的Active Admin表单中,我想根据其parent_id对复选框进行分层排序,例如

  • 第1类[]
    • 第2类[]
    • 第3类[]
  • 第6类[]
    • 第4类[]
  • 第5类[]
  • 第7类[]

以下是我的表格:

ActiveAdmin.register Product do
    form do |f|
      f.inputs "Product" do
      f.input :comment
      f.input :categories, :as => :check_boxes
      f.input :location
    end
    f.buttons
  end
end

目前,表格会拉入复选框并正确保存数据,但我不知道从哪里开始对它们进行分组。我查看了文档,但看不到任何明显的内容。

1 个答案:

答案 0 :(得分:1)

这可能部分受到用户Hopstream的ActiveAdmin -- How to display category taxonomy? (in tree type hierarchy)问题的影响。这是不同的,因为Formtastic提出了一些有趣的挑战,然而,形式直接的不能完全“开箱即用”。

然而,有可能扩展和覆盖Formtastic的Formtastic::Inputs::CheckBoxesInput类,以便通过嵌套逻辑添加面条的能力。幸运的是,这个问题也已经发生在其他人身上了。

Github用户michelson的Formtastic check boxes with awesome_nested_set要点将为您提供一个可添加到rails应用程序的课程,将acts_as_nested_set行放在Product模型和f.input行中对于f.inputs "Product"区块内的Formtastic ActiveAdmin.register区块所必需的区块,其实际上应该可以从模型结构中修改为:

f.input :categories, :as=>:check_boxes, :collection=>Category.where(["parent_id is NULL"]) , :nested_set=>true