Come popolare un campo in base alla selezione nel campo precedente?
-
07-07-2019 - |
Domanda
Nella forma che abbiamo progettato, abbiamo un "Stati" campo che consente ai suoi utenti di selezionare più stati contemporaneamente. C'è una "Città" campo che dovrebbe essere popolato secondo la selezione nello "Stato" campo. I valori in " Città " il campo viene popolato correttamente se è selezionato solo uno stato. Tuttavia, non viene visualizzato correttamente quando sono selezionati più stati.
Per favore, suggerisci una soluzione Ruby per lo stesso.
Soluzione
Il problema è l'espressione : con
nel tuo observ_field
. document.getElementById ('usa_states _'). value
restituirà solo un singolo valore e non tutti i valori selezionati.
Non sono sicuro che ci sia un modo per gestirlo automaticamente in Rails, ma una soluzione è scrivere una funzione JavaScript che creerà una stringa di tutti i valori selezionati separati da virgole. per es.
function selectedValuesAsString(multiselect) {
selectedValues = new Array();
for (i = 0; i < multiselect.length; i++) {
if (multiselect[i].selected) {
selectedValues.push(multiselect[i].value);
}
}
return selectedValues.join();
}
e quindi aggiorna : con
per essere qualcosa del tipo:
:with => "'state='+selectedValuesAsString(document.getElementById('usa_states_')"
e infine dividere i valori all'interno dell'azione del controller.