Ich gehe die Rails API-Dokumente durch collection_select
und sie sind schrecklich.
Die Überschrift lautet:
collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})
Und dies ist der einzige Beispielcode, den sie geben:
collection_select(:post, :author_id, Author.all, :id, :name_with_initial, :prompt => true)
Kann jemand anhand einer einfachen Zuordnung (z. B. User
has_many Plans
und a Plan
gehört zu a User
) erklären, was ich in der Syntax verwenden möchte und warum?
Bearbeiten 1: Außerdem wäre es fantastisch, wenn Sie erklären würden, wie es in einer form_helper
oder einer regulären Form funktioniert . Stellen Sie sich vor, Sie erklären dies einem Webentwickler, der die Webentwicklung versteht, für Rails jedoch "relativ neu" ist. Wie würden Sie es erklären?
quelle
FormBuilder
in Ordnung , nur nicht in der, sondern in derFormOptionsHelper
: api.rubyonrails.org/classes/ActionView/Helpers/…Antworten:
Oder Ihr Beispiel kann wie folgt dargestellt werden:
Dies ist nicht in der
FormBuilder
, sondern in der dokumentiertFormOptionsHelper
quelle
Ich habe selbst einige Zeit mit den Permutationen der ausgewählten Tags verbracht.
collection_select
Erstellt ein Select-Tag aus einer Sammlung von Objekten. Denken Sie daran,object
: Name des Objekts. Dies wird verwendet, um den Namen des Tags zu generieren, und wird verwendet, um den ausgewählten Wert zu generieren. Dies kann ein tatsächliches Objekt oder ein Symbol sein. Im letzteren Fall wird die Instanzvariable dieses Namens in der Bindung derActionController
(dh:post
sucht nach einer aufgerufenen Instanzvariablen) gesucht@post
in Ihrem Controller wird.).method
: Name der Methode. Dies wird verwendet, um den Namen des Tags zu generieren. Mit anderen Worten, das Attribut des Objekts, das Sie aus der Auswahl abrufen möchtencollection
: Die Sammlung von Objektenvalue_method
: Für jedes Objekt in der Auflistung wird diese Methode als Wert verwendettext_method
: Für jedes Objekt in der Sammlung wird diese Methode zum Anzeigen von Text verwendetOptionale Parameter:
options
: Optionen, die Sie übergeben können. Diese sind hier dokumentiert unter der Überschrift Optionen .html_options
: Was auch immer hier übergeben wird, wird einfach zum generierten HTML-Tag hinzugefügt. Wenn Sie eine Klasse, eine ID oder ein anderes Attribut angeben möchten, klicken Sie hier.Ihr Verein könnte geschrieben werden als:
collection_select(:user, :plan_ids, Plan.all, :id, :name, {:prompt => true, :multiple=>true })
In Bezug auf die Verwendung
form_for
aller Tags, die in dieform_for
z.f.text_field
müssen Sie denobject
Parameter first ( ) nicht angeben. Dies ist derform_for
Syntax entnommen .quelle