2009-09-16 99 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

相關問題