2009-09-16 100 views
1

在我们设计的形式中,我们有一个“States”字段,允许其用户一次选择多个状态。有一个“城市”字段应按照“州”字段中的选择填写。如果只选择一个状态,则“城市”字段中的值正确填充。但是,选择多个状态时,它不能正确显示。如何基于前一字段中的选择填充字段?

请为此建议一个Ruby解决方案。

+0

请发布您的代码到目前为止。 – mikej 2009-09-16 07:44:10

+0

以下是美国州代码 <%= select_tag'usa [states] []',options_from_collection_for_select(state,:state,:state,nil),:multiple => true,:class =>“multi_select “%> 我使用观察字段(AJAX)观察选择哪种状态 <%= observe_field:usa_states_,:url => {:controller =>”logins“,:action =>'deliverrable_cities',:id =>'1'},::update =>'deliverrable_city',:with =>''state ='+ document.getElementById('usa_states _')。value +'&type = restaurant'“,:on =>'click'% > 选择哪个州将在城市选择列表中显示该州的所有城市 – Aditya 2009-09-16 08:13:11

+0

当我仅选择一个州时,此工作正常。但是当我选择多个状态时,我只能通过ajax获得一个值,因此只能得到那个单一状态的城市。 – Aditya 2009-09-16 08:13:49

回答

1

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

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

​​

,然后更新:with是这样的:

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

,最后分割你的控制器动作中的值。

+0

Thanx伙计它的工作原理。太感谢了。 – Aditya 2009-09-18 05:09:21

相关问题