Un campo in una forma rotaie per selezionare un 'belongs_to' oggetto
-
18-09-2019 - |
Domanda
Oh, così si prega di portare con me ... Ho un modello per le prenotazioni e un modello per i conducenti. Un driver ha molte prenotazioni e una prenotazione appartiene ad un driver.
Quando si aggiunge o si modifica una prenotazione, voglio che l'utente sia in grado di digitare il nome utente del driver. I nomi utente sono unici e più facile per l'utente finale che dare ogni pilota un numero.
Ora, questo è come ho fatto:
def create
if params[:booking][:driver].empty?
params[:booking][:driver] = nil
else
@driver = Driver.find(:first, :conditions => { :username => params[:booking][:driver] })
params[:booking][:driver] = @driver
end
Questo codice funziona bene per la presentazione, ma quando il form viene caricato, si vede il riferimento dell'oggetto (ad es. #) E ho bisogno di mostrare il nome utente. Come posso cambiare <% = f.text_field: il driver%>? Nel form_for nella vista edit per prendere il valore del nome utente driver
Sto andando su questo nel modo giusto, o c'è un morto facile, rotaie modo per fare quello che mi serve?
Soluzione
"ma quando il form viene caricato" cosa vuoi dire quando non riesce a creare o quando si modifica? Puoi pubblicare pubblicare il tuo aggiornamento completo e creare azioni per favore.
params [: prenotazione] [: autista] = @ driver.username dovrebbe popolare il parametro con una stringa invece di un oggetto, anche se non sono sicuro che questo è davvero ciò che si vuole fare. Invece di impostazione a zero se il suo vuoto, basta lasciare in bianco, a zero, è un oggetto che forse il motivo per cui si sta vedendo il '#'
Che cosa stai facendo qui non mi sembra giusto, probabilmente più senso attaccare solo con la casella di selezione dei piloti in ogni caso, in cui il campo è il driver_id. Se davvero si vuole utilizzare una casella di testo, allora io ti aiuterò fuori? Basta inserire il codice prima.
Hai visto questo? Dovrebbe aiutare a guidare un po 'di più:
http://railscasts.com/episodes/57-create -model-through-text-campo