Qualcuno può spiegarmi collection_select in termini chiari e semplici?

Sto esaminando i documenti dell’API di Rails per collection_select e sono terribili.

L’intestazione è questa:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

E questo è l’unico codice di esempio che danno:

collection_select(:post, :author_id, Author.all, :id, :name_with_initial, :prompt => true)

Qualcuno può spiegare, usando una semplice associazione (diciamo che un User molti Plans e un Plan appartiene a un User ), cosa voglio usare nella syntax e perché?

Modifica 1: Inoltre, sarebbe fantastico se tu spiegassi come funziona all’interno di un form_helper o di un modulo regolare. Immagina di spiegarlo a uno sviluppatore web che comprende lo sviluppo web, ma è “relativamente nuovo” per Rails. Come lo spiegheresti?

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

Oppure il tuo esempio può essere rappresentato come il seguente codice:

  

Questo non è documentato in FormBuilder , ma in FormOptionsHelper

Ho passato un bel po ‘di tempo sulle permutazioni dei tag selezionati io stesso.

collection_select crea un tag select da una collezione di oggetti. Tenendo presente questo,

object : nome dell’object. Questo è usato per generare il nome del tag e viene utilizzato per generare il valore selezionato. Questo può essere un object reale o un simbolo – in quest’ultimo caso, la variabile di istanza di quel nome viene cercata nell’associazione di ActionController (ovvero :post cerca una @post istanza chiamata @post nel controller).

method : nome del metodo. Questo è usato per generare il nome del tag. In altre parole, l’attributo dell’object che stai cercando di ottenere dalla select

collection : la collezione di oggetti

value_method : per ogni object nella raccolta, questo metodo viene utilizzato per il valore

text_method : per ogni object nella raccolta, questo metodo viene utilizzato per il testo visualizzato

Parametri facoltativi:

options : opzioni che puoi passare. Questi sono documentati qui , sotto l’intestazione Opzioni.

html_options : qualunque cosa venga passata qui, viene semplicemente aggiunta al tag html generato. Se vuoi fornire una class, un ID o qualsiasi altro attributo, va qui.

La tua associazione potrebbe essere scritta come:

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

Per quanto riguarda l’utilizzo di form_for , sempre in termini molto semplici, per tutti i tag che rientrano in form_for , ad es. f.text_field , non è necessario fornire il primo parametro ( object ). Questo è preso dalla syntax form_for .