Pregunta

En la forma que diseñamos, tenemos un " Estados " campo que permite a sus usuarios seleccionar múltiples estados a la vez. Hay una "Ciudad" campo que debe rellenarse según la selección en el "Estado" campo. Los valores en la "Ciudad" Los campos se rellenan correctamente si solo se selecciona un estado. Sin embargo, no se muestra correctamente cuando se seleccionan varios estados.

Sugiera una solución Ruby para lo mismo.

¿Fue útil?

Solución

El problema es la expresión : with en su observe_campo . document.getElementById ('usa_states _'). value solo devolverá un único valor y no todos los valores seleccionados.

No estoy seguro de si hay una manera de manejar esto automáticamente en Rails, pero una solución es escribir una función de JavaScript que construya una cadena de todos los valores seleccionados separados por comas. por ejemplo,

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

y luego actualice el : con para que sea algo así como:

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

y finalmente divide los valores dentro de la acción del controlador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top