2012-10-19 23 views
5

Đây là mô hình danh mục. Danh mục có thể thuộc về một danh mục khác.Làm cách nào để nhóm các hộp kiểm theo cha mẹ với Quản trị viên Hoạt động (định dạng)

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 

Đây là mô hình sản phẩm:

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 

Trong hình thức quản lý tích cực cho một sản phẩm tôi muốn phân cấp ra lệnh cho các hộp kiểm bên dựa trên họ PARENT_ID ví dụ

  • Loại 1 []
    • Loại 2 []
    • loại 3 []
  • Category 6 []
    • loại 4 []
  • Danh mục 5 []
  • loại 7 []

Dưới đây là như xa như tôi đã có với các hình thức:

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 

Hiện nay hình thức kéo trong các hộp kiểm và lưu dữ liệu một cách chính xác nhưng tôi không chắc chắn bắt đầu bằng cách nhóm chúng. Tôi nhìn qua tài liệu nhưng không thể nhìn thấy bất cứ điều gì rõ ràng.

Trả lời

1

Điều này có thể được beaddressed một phần bởi câu hỏi của người dùng Hopstream ActiveAdmin -- How to display category taxonomy? (in tree type hierarchy). Nó là đủ khác nhau vì Formtastic để trình bày một số thách thức thú vị, tuy nhiên, cụ thể là formtastic thẳng lên không thể làm điều này "ra khỏi hộp" ở tất cả.

Có thể, tuy nhiên để mở rộng và ghi đè lên lớp Formtastic::Inputs::CheckBoxesInput của Formtastic để thêm khả năng truyền tải qua logic lồng nhau. May mắn thay, vấn đề này cũng đã xảy ra cho người khác.

Github dùng Michelson của Formtastic check boxes with awesome_nested_set ý chính sẽ cung cấp cho bạn với một lớp học mà bạn có thể thêm vào ứng dụng ray của bạn, đặt dòng acts_as_nested_set trong mô hình Product của bạn và f.input dòng cần thiết cho khối Formtastic f.inputs "Product" trong ActiveAdmin.register khối của bạn, mà thực sự nên làm việc chưa sửa đổi từ cấu trúc của mô hình của bạn như:

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

+0

có vẻ như với tôi rằng đây không thể là một vấn đề thường xuyên xảy ra. Nó có thể xử lý một người nào đó để yêu cầu kéo đến https://github.com/justinfrench/formtastic với những thay đổi này trong lớp cơ sở 'Formtastic :: Inputs :: CheckBoxesInput' thực tế với một số bài kiểm tra. Tôi có thể nếu tôi có thời gian, nhưng nó có thể sẽ không được trong vài tuần cho đến khi tôi có thể tìm thấy một số miễn phí. – jimcavoli