2011-06-28 3 views
4

Fondamentalement, j'essaye de créer un groupe dynamique de cases à cocher qui sont clavées d'une sélection de catégorie dans la même forme. Par exemple, un utilisateur choisirait une catégorie dans la liste de sélection, puis une liste de cases à cocher de sous-catégorie correspondantes apparaîtrait.Comment créer des "partiels" Formtastic

Je l'ai fait auparavant avec seulement des sélections, mais celles-ci sont beaucoup plus faciles car il suffit de fournir un ensemble générique d'options. Les cases à cocher (en particulier avec formtastic) ont beaucoup de balisage correspondant que je préfère ne pas générer moi-même.

Ma question, alors, est comment obtenir formtastic pour créer seulement les cases à cocher appropriées mais toujours avoir leurs champs nom et id contiennent toutes les informations imbriquées correctement. Je veux qu'il agisse exactement comme suit, mais ne produise que la dernière ligne pour que j'envoie l'ajax.

= semantic_form_for @user do |u| 
    = u.inputs :name, :age 
    = semantic_fields_for :job do |f| 
    = f.input :category, :as => :select, :collection => Category.all 
    = f.input :subcategory, :as => :check_boxes, :collection => # This is what needs to be dynamic 

J'ai essayé juste en utilisant la dernière ligne enveloppée dans un semantic_fields_for, mais les noms de champs génériques ne sont plus corrects.

Comment le feriez-vous?

Répondre

0

Je voudrais essayer ceci:

= semantic_fields_for @user do |u| 
    = semantic_fields_for :job do |f| 
    = f.input :subcategory, :as => :check_boxes, :collection => some_thing 

Je suis assez sûr que devrait fonctionner.

0

Vous auriez besoin d'utiliser un assistant et de le définir comme une méthode. par exemple:

def form_boxes(f) 
    f.input :subcategory, :as => :check_boxes, :collection => stuff_goes_here 
end 

puis appelez à votre avis:

= form_boxes(f) 
+0

Cela fonctionnerait si vous vouliez créer le formulaire entier, mais la question reste toujours de savoir comment rendre uniquement les cases à cocher. Le but de ceci est de créer dynamiquement un ensemble de cases à cocher filtrées pour revenir d'un appel ajax. – Luke

+0

Ah, je vois le vrai problème maintenant. – thomasfedb

Questions connexes