2013-01-04 30 views
1

我想根據用戶選擇的國家實施州的自動限制選擇。
當用戶在國家領域選擇美國時,它應該只顯示美國州如加利福尼亞州或紐約州等,在州選擇領域。如何使用Jquery Ajax設置約束選擇?

國家模型

  • ID

模型

  • ID
  • COUNTRY_ID

現在我展示這樣

<% resource.build_user_profile if resource.user_profile.nil? %> 
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put, :class => 'form-horizontal' }) do |f| %> 
    <%= devise_error_messages! %> 

<%= f.fields_for :user_profile do |profile_form| %> 

<label class="control-label"><%= profile_form.label :country_id %></label> 
<%= profile_form_select :country, options_for_select(Countryy.all.map{ |g| [g.name, g.id] }) %> 

<label class="control-label"><%= profile_form.label :prefecture_id %></label> 
<%= profile_form_select :prefecture, options_for_select(Prefecture.all.map{ |g| [g.name, g.id] }) %> 

<% end %> 

回答

1

這些領域如果修改HTML編寫自定義選擇選項生成器,你可以使用一些JS像下面。

的JavaScript:

$(".country_select").change(function() { 
    var country_id = $(this).val(); 
    if(country_id) { 
    $(".prefecture_select option[country_id="+country_id+"]").hide(); 
    } else { 
    $(".prefecture_select option").show(); 
    } 
} 

如果你不想寫一個自定義選擇幫手做會創建多個選擇和使用JS,只顯示該國相匹配的下一個最簡單的事情,被選中。

+0

謝謝。我應該用你的代碼製作JS文件嗎?控制器和視圖怎麼樣?我所知道的是,如果用戶按下提交,它是如何工作的。但是這裏用戶選擇國家後不需要按提交。你如何檢測用戶是否選擇了? – cat

+0

是的,你需要一個JavaScript文件,在DOM準備就緒並且表單存在於DOM中之後執行此代碼。最糟糕的,但可能最簡單的方法就是將該代碼直接複製到ERB文件中。 –

+0

如果我把這個表格放在後面,我應該用包裝我的縣名字段......?而已?只需複製你的代碼和粘貼將罰款? – cat