2010-01-18 2 views
0

Je suis en train d'apprendre les rails et j'ai rencontré quelques difficultés. Permettez-moi de commencer par une simple panne de ma demande - c'est un livre de recettes (de sortes)Utilisation de plusieurs éléments de collection_select sur un formulaire avec plusieurs modèles

  • Recettes ont un ou plusieurs ingrédients (thon, rate, etc.)
  • Ingrédients ont une unité (onces, livres, etc.)
  • unités sont tirées d'une table de recherche

Voici une capture d'écran pour aider à clarifier les choses plus: Form Mockup

Son C'est mon problème: mes noms d'éléments collection_select doivent être quelque chose comme unit[id][]

Au lieu de cela, ils sont tous simplement nommés unit[id]. Voici l'extrait que je utilise:

 
collection_select(
    :unit, 
    :id, 
    @units, 
    :id, 
    :name, 
    options = { 
     :prompt => "Please Select", 
     :class => "ingredient_unit", 
     :name => "unit[][]", 
     :id => "unit:" + i.to_s() 
    } 
); 

Cependant, voici ce qu'elle est délivrer en sortie:

 
<select id="unit_id" name="unit[id]"> 
<option value="">Please Select</option> 
<option value="1">Ounces</option> 
</select> 
... 

Maintenant, en php, ces listes déroulantes serait nommé unit[]. Est-ce que je vais à ce sujet dans le mauvais sens?

Merci pour l'aide

Répondre

0

Je ne suis pas sûr de ce que l'option « nom » fait dans le hachage « options ». Pouvez-vous poster un lien vers où vous avez trouvé la documentation de cela? Il semble que vous utilisiez correctement l'assistant de sélection de collection. Que voulez-vous dire par "ces drop-down seraient nommés unité []"? Cela peut être utile si vous nous informez de l'objectif final de ce formulaire, car Rails s'occupe généralement de vos tâches. Profitez de sa magie.

Aussi, si vous êtes un débutant Rails, nous vous recommandons fortement de vérifier les screencasts de Ryan Bates sur des formulaires complexes. Voici le lien à la partie 1: http://railscasts.com/episodes/73-complex-forms-part-1

+0

Merci pour le lien, il a beaucoup aidé. En ce qui concerne le paramètre ': name', c'était plus une hypothèse. Avec d'autres helpers de formulaire, vous pouvez passer ': name' pour définir le nom de l'entrée de texte ou autre. En ce qui concerne mon objectif du formulaire, c'était de créer une nouvelle recette et d'assigner des ingrédients à cette recette, ainsi que des unités à chaque ingrédient. Comme pour la remarque 'unit []': en PHP, si vous voulez spécifier un tableau d'éléments de formulaire, vous ajoutez '[]' à la fin du nom de l'élément et ensuite '$ _POST' traitera' $ _POST [" unité "]' en tant que tableau. J'espère que ça aide. –

+0

Juste un avertissement, le code de certaines des choses dont il parle a été remplacé par des attributs imbriqués. http://railscasts.com/episodes/196-nested-model-form-part-1 –

Questions connexes