139 votes

Peut quelqu'un collection_select m’expliquer en termes clairs et simples ?

Je vais à travers les Rails de l'API docs pour collection_select et ils sont de dieu terrible.

L'en-tête est présent:

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 m'expliquer, à l'aide d'une simple association (disons User has_many Plans, et un Plan appartient à un User), ce que je veux utiliser la syntaxe et pourquoi?

Edit 1: Aussi, ce serait génial si vous expliqué comment il fonctionne à l'intérieur d'un form_helper ou une forme régulière. Imaginez-vous expliquer cela à un développeur web qui comprend le développement web, mais est relativement nouveau " pour les Rails. Comment expliquez-vous cela?

294voto

alexkv Points 2102
<pre><code></code><p>Ou votre exemple peut être représenté par le code suivant :</p><pre><code></code></pre></pre>

20voto

zsquare Points 4394

J'ai passé pas mal de temps sur les permutations de l'sélectionnez les balises de moi-même.

collection_select construit une balise select à partir d'une collection d'objets. En gardant cela à l'esprit,

object : Nom de l'objet. Ce est utilisé pour générer le nom de la balise.

method : Nom de la méthode. Ce 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 à partir de la sélectionner

collection : La collection d'objets

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

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

Paramètres Optionnels:

options : Options que vous pouvez passer. Celles-ci sont documentées ici, sous la rubrique Options.

html_options : Ce qui est passé ici, est simplement ajoutée à l'généré balise html. Si vous voulez fournir une class, id, ou tout autre attribut, il va ici.

Votre association peut être écrite comme:

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

En ce qui concerne l'aide d' form_for,, de nouveau, en termes très simples, pour tous les mots qui viennent à l'intérieur de l' form_for, par exemple. f.text_field, vous n'avez pas besoin de fournir le premier (object) paramètre. Ceci est pris à partir de l' form_for de la syntaxe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X