如何根据以前字段中的选择填充字段?

时间:2009-09-16 06:43:02

标签: ruby-on-rails ruby multiple-select

在我们设计的表单中,我们有一个“States”字段,允许用户一次选择多个状态。应该根据“状态”字段中的选择填充“城市”字段。如果仅选择一个状态,则“城市”字段中的值将正确填充。但是,当选择多个状态时,它无法正确显示。

请为此推荐Ruby解决方案。

1 个答案:

答案 0 :(得分:1)

问题在于:with中的observe_field表达式。 document.getElementById('usa_states_').value只会返回单个值,而不会返回所有选定的值。

我不确定是否有办法在Rails中自动处理这个问题,但一种解决方案是编写一个JavaScript函数,它将构建一个由逗号分隔的所有选定值的字符串。 e.g。

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_')"

然后最终拆分控制器操作中的值。