2012-10-19 6 views
5

Dies ist das Kategoriemodell. Eine Kategorie kann einer anderen Kategorie angehören.Wie gruppiere ich Checkboxen nach Eltern mit Active Admin (formatastic)

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 

Dies ist das Produktmodell:

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 

In der Active Admin Form für ein Produkt, das ich hierarchisch die auf ihre parent_id zum Beispiel basierend Kontrollkästchen bestellen möchten

  • Kategorie 1 []
    • Kategorie 2 []
    • Kategorie 3 []
  • Kategorie 6 []
    • Kategorie 4 []
  • Kategorie 5 []
  • Kategorie 7 []

Unten finden Sie so weit wie ich mit der Form habe:

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 

Derzeit ist die Form in dem Kontrollkästchen zieht und speichert die Daten korrekt, aber ich bin nicht sicher, Wo soll ich anfangen, sie zu gruppieren? Ich habe die Dokumentation durchgesehen, konnte aber nichts Offensichtliches erkennen.

Antwort

1

Dies kann beaddressed teilweise durch Benutzer Hopstream ActiveAdmin -- How to display category taxonomy? (in tree type hierarchy) Frage. Es ist jedoch anders wegen Formtastic, einige interessante Herausforderungen zu präsentieren, nämlich dass Formtastic gerade dies nicht "out of the box" überhaupt tun kann.

Es ist jedoch möglich, die Klasse Formtastic::Inputs::CheckBoxesInput von Formtastic zu erweitern und außer Kraft zu setzen, um die Fähigkeit hinzuzufügen, die Verschachtelungslogik zu durchforsten. Glücklicherweise ist dieses Problem auch schon für jemand anderen passiert.

Github des Benutzers Elson Formtastic check boxes with awesome_nested_set Kern werden Sie mit einer Klasse bieten Sie Ihre Rails-Anwendung hinzufügen können, die acts_as_nested_set Linie in Ihrem Product Modell platzieren und die f.input Linie, die für die Formtastic f.inputs "Product" Block in Ihrem ActiveAdmin.register Block, die tatsächlich funktionieren sollte unmodifizierten von der Struktur Ihrer Modelle wie:

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

+0

Es scheint mir, dass dies nicht ein selten auftretendes Problem sein kann. Es kann jemand sein, eine Pull-Anforderung zu https://github.com/justinfrench/formtastic mit diesen Änderungen in der tatsächlichen 'Formtastic :: Inputs :: CheckBoxesInput' Basisklasse mit einigen Tests zu bekommen. Ich könnte, wenn ich Zeit habe, aber es wird wahrscheinlich nicht für mehrere Wochen dauern, bis ich etwas frei finden kann. – jimcavoli

Verwandte Themen