Je suis en train de parcourir les documents de l'API Rails pour collection_select
et ils sont horribles.
Le titre est le suivant:
collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})
Et c'est le seul exemple de code qu'ils donnent:
collection_select(:post, :author_id, Author.all, :id, :name_with_initial, :prompt => true)
Quelqu'un peut-il expliquer, en utilisant une simple association (disons a User
has_many Plans
, et a Plan
appartient à a User
), ce que je veux utiliser dans la syntaxe et pourquoi?
Edit 1: De plus, ce serait génial si vous expliquiez comment cela fonctionne dans un form_helper
formulaire ou un formulaire régulier. Imaginez que vous expliquez cela à un développeur Web qui comprend le développement Web, mais qui est «relativement nouveau» pour Rails. Comment l'expliquerais-tu?
la source
FormBuilder
mais dans leFormOptionsHelper
: api.rubyonrails.org/classes/ActionView/Helpers/…Réponses:
Ou votre exemple peut être représenté comme le code suivant:
Ce n'est pas documenté dans le
FormBuilder
, mais dans leFormOptionsHelper
la source
J'ai moi-même passé pas mal de temps sur les permutations des balises sélectionnées.
collection_select
crée une balise de sélection à partir d'une collection d'objets. Gardant cela à l'esprit,object
: Nom de l'objet. Ceci est utilisé pour générer le nom de la balise et pour générer la valeur sélectionnée. Cela peut être un objet réel ou un symbole - dans ce dernier cas, la variable d'instance de ce nom est recherchée dans la liaison duActionController
(c'est-à-dire qu'elle:post
recherche une instance var appelée@post
dans votre contrôleur.)method
: Nom de la méthode. Ceci est utilisé pour générer le nom de la balise. En d'autres termes, l'attribut de l'objet que vous essayez d'obtenir de la sélectioncollection
: La collection d'objetsvalue_method
: Pour chaque objet de la collection, cette méthode est utilisée pour la valeurtext_method
: Pour chaque objet de la collection, cette méthode est utilisée pour afficher du texteParamètres facultatifs:
options
: Options que vous pouvez passer. Ceux-ci sont documentés ici , sous la rubrique Options.html_options
: Tout ce qui est passé ici, est simplement ajouté à la balise html générée. Si vous souhaitez fournir une classe, un identifiant ou tout autre attribut, il va ici.Votre association pourrait s'écrire:
collection_select(:user, :plan_ids, Plan.all, :id, :name, {:prompt => true, :multiple=>true })
En ce qui concerne l'utilisation
form_for
, encore une fois en termes très simples, pour toutes les balises qui entrent dansform_for
, par exemple.f.text_field
, vous n'avez pas besoin de fournir le premierobject
paramètre ( ). Ceci est tiré de laform_for
syntaxe.la source