Question

Dans la forme que nous avons conçue, nous avons un "États". champ qui permet à ses utilisateurs de sélectionner plusieurs états à la fois. Il y a un " Ville " champ qui doit être rempli conformément à la sélection dans le champ "Etat". champ. Les valeurs dans le champ "Ville". Les champs sont correctement renseignés si un seul état est sélectionné. Cependant, il ne s'affiche pas correctement lorsque plusieurs états sont sélectionnés.

Veuillez suggérer une solution Ruby identique.

Était-ce utile?

La solution

Le problème est l'expression : avec dans votre champ_observateurs . document.getElementById ('usa_states _'). value ne renverra qu'une seule valeur et non toutes les valeurs sélectionnées.

Je ne sais pas s'il existe un moyen de gérer cela automatiquement dans Rails, mais une solution consiste à écrire une fonction JavaScript qui construira une chaîne de toutes les valeurs sélectionnées, séparées par des virgules. par exemple

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();
}

puis mettez à jour le : avec pour qu'il ressemble à ceci:

:with => "'state='+selectedValuesAsString(document.getElementById('usa_states_')"

et divisez enfin les valeurs dans l'action de votre contrôleur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top