Как заполнить поле на основе выбора в предыдущем поле? - PullRequest
1 голос
/ 16 сентября 2009

В форме, которую мы разработали, у нас есть поле «Состояния», которое позволяет пользователям выбирать несколько состояний одновременно. Существует поле «Город», которое должно быть заполнено в соответствии с выбором в поле «Штат». Значения в поле «Город» заполняются правильно, если выбран только один штат. Однако он не отображается правильно, когда выбрано несколько состояний.

Пожалуйста, предложите решение Ruby для того же.

1 Ответ

1 голос
/ 16 сентября 2009

Проблема в выражении :with в вашем observe_field. document.getElementById('usa_states_').value вернет только одно значение, а не все выбранные значения.

Я не уверен, есть ли способ обработать это автоматически в Rails, но одно из решений - написать функцию JavaScript, которая будет строить строку из всех выбранных значений, разделенных запятыми. например,

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

, а затем обновите :with, чтобы он выглядел примерно так:

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

и затем, наконец, разделите значения внутри действия вашего контроллера.

...