在我们设计的表单中,我们有一个“状态”字段,允许其用户一次选择多个状态。有一个“城市”字段,应根据“州”字段中的选择进行填充。如果只选择了一个州,则“城市”字段中的值会正确填充。However, it is not showing correctly when multiple states are selected.
请为此建议一个 Ruby 解决方案。
在我们设计的表单中,我们有一个“状态”字段,允许其用户一次选择多个状态。有一个“城市”字段,应根据“州”字段中的选择进行填充。如果只选择了一个州,则“城市”字段中的值会正确填充。However, it is not showing correctly when multiple states are selected.
请为此建议一个 Ruby 解决方案。
问题是: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_')"
然后最后拆分控制器操作中的值。