Quelqu’un peut-il m’expliquer collection_select en termes simples et clairs?

Je suis en train de parcourir les documents de l’API Rails pour collection_select et ils sont terribles.

La rubrique est la suivante:

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 association simple (disons un User has_many Plans , et un Plan appartient à un User ), ce que je veux utiliser dans la syntaxe et pourquoi?

Edit 1: En outre, ce serait génial si vous form_helper comment cela fonctionne dans un form_helper ou une forme régulière. Imaginez que vous expliquez cela à un développeur Web qui comprend le développement Web, mais qui est «relativement nouveau» pour Rails. Comment l’expliqueriez-vous?

 collection_select( :post, # field namespace :author_id, # field name # result of these two params will be:  

Ou votre exemple peut être représenté comme le code suivant:

  

Ce n’est pas documenté dans le FormBuilder , mais dans le FormOptionsHelper

J’ai passé pas mal de temps sur les permutations des tags sélectionnés.

collection_select construit une balise select à partir d’une collection d’objects. Garder cela à l’esprit,

object : Nom de l’object. Ceci est utilisé pour générer le nom de la balise et est utilisé pour générer la valeur sélectionnée. Cela peut être un object réel ou un symbole – dans ce dernier cas, la variable d’instance de ce nom est recherchée dans la liaison de l’ ActionController (c’est-à-dire :post recherche une @post instance 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’atsortingbut de l’object que vous essayez

collection : La collection d’objects

value_method : Pour chaque object de la collection, cette méthode est utilisée pour la valeur

text_method : Pour chaque object de la collection, cette méthode est utilisée pour afficher du texte

Paramètres facultatifs:

options : Options que vous pouvez passer. Ceux-ci sont documentés ici , sous le titre Options.

html_options : tout ce qui est passé ici est simplement ajouté à la balise HTML générée. Si vous voulez fournir une classe, un identifiant ou tout autre atsortingbut, vous le trouverez ici.

Votre association pourrait être écrite comme:

collection_select(:user, :plan_ids, Plan.all, :id, :name, {:prompt => true, :multiple=>true })

En ce qui concerne l’utilisation de form_for , encore une fois en termes très simples, pour toutes les balises qui entrent dans le form_for , par exemple. f.text_field , vous n’avez pas besoin de fournir le premier paramètre ( object ). Ceci provient de la syntaxe form_for .