Frage

In der Form, die wir entworfen haben wir ein „Staaten“ Feld, das seine Nutzern ermöglicht, mehrere Zustände zu einem Zeitpunkt, zu wählen. Es gibt ein Feld „Stadt“, die gemäß der Auswahl in dem „State“ Feld ausgefüllt werden sollen. Die Werte in dem „City“ Feld richtig aufgefüllt, wenn nur ein Zustand ausgewählt ist. Es ist jedoch nicht richtig zeigt, wenn mehrere Zustände ausgewählt werden.

Bitte legen eine Ruby-Lösung für das gleiche.

War es hilfreich?

Lösung

Das Problem ist der :with Ausdruck in Ihrem observe_field. document.getElementById('usa_states_').value wird nur einen einzigen Wert zurückgeben und nicht alle ausgewählten Werte.

Ich bin nicht sicher, ob es einen Weg gibt, diese in Rails automatisch zu handhaben, aber eine Lösung ist eine JavaScript-Funktion zu schreiben, die eine Zeichenfolge aller ausgewählten Werte durch Komma getrennt bauen. z.

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

und dann die :with aktualisieren, um so etwas wie:

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

und dann geteilt schließlich die Werte in Ihrer Controller-Aktion.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top