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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top