Проблема в выражении :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_')"
и затем, наконец, разделите значения внутри действия вашего контроллера.