Sto lavorando a un'app Rails e mi sono imbattuto in una situazione in cui non sono sicuro del modo più pulito per procedere.
Ho postato una domanda su SO con esempi di codice e simili - non ha ricevuto risposte e più penso al problema, più penso che potrei avvicinarmi al modo sbagliato. (Vedi la domanda SO su link )
Quindi, in più di una domanda tipo architettura generica: In questo momento ho un modulo in cui un utente può aggiungere una nuova ricetta. Il modulo consente inoltre all'utente di selezionare gli ingredienti (utilizza un collection_select che contiene Ingredient.all). Il problema è: vorrei che l'utente fosse in grado di aggiungere un nuovo ingrediente al volo, senza lasciare il modulo della ricetta.
Usando un div nascosto e alcuni jQuery / AJAX, ho un link che l'utente può fare clic per visualizzare un modulo modale contenente ingredienti / new.html.erb che è una forma semplice. Quando viene inviato quel modulo, chiamo ingredienti / create.js.erb per convalidare l'ingrediente che è stato salvato e nascondere il div modale. Ora torno al mio modulo di ricette, ma il mio collection_select non è stato aggiornato.
Sembra che io abbia alcune scelte qui:
-
prova a ripetere il rendering della parte collection_select del modulo in modo che acquisisca un nuovo elenco di ingredienti. Questo era il metodo che stavo tentando quando ho scritto la domanda SO. Il problema a cui mi imbatto è il partial che utilizzo per collection_select ha bisogno del modulo genitore passato, e quando provo a eseguire il rendering dal file JS non so come passarlo l'oggetto form.
-
Ricarica il modulo della ricetta. Funziona (la collezione_select ora contiene il nuovo ingrediente), ma l'utente perde ogni progresso fatto sul modulo della ricetta. Avrei bisogno di un modo per mantenere i dati del modulo - ho pensato di passare manualmente i valori avanti e indietro, ma questo è sciatto e ci deve essere un modo migliore ...
-
Prova a inserire manualmente i tag usando jQuery - questo sarebbe semplice, ma poiché sto permettendo l'aggiunta di più ingredienti, non posso essere certo quale ID scegliere come target.
Ora, non posso essere l'unica persona ad avere questo problema - quindi c'è un modo più semplice che mi manca? Mi piace l'opzione 2 di cui sopra, ma non so se c'è un modo semplice per afferrare l'intero hash dei parametri come se avessi inviato il modulo delle ricette principali.
Spero che qualcuno possa indicarmi la direzione giusta in modo da trovare una risposta a questo ... Se questo non ha alcun senso, fammi sapere - Posso postare esempi di codice se vuoi, ma la maggior parte il codice pertinente si trova nella domanda SO.
Grazie!