1

ユーザーが選択した国に応じて、都道府県の自動制約付き選択を実装したいと思います。
ユーザーが国フィールドで米国を選択した場合、都道府県選択フィールドには、カリフォルニアやニューヨークなどのアメリカの州のみが表示されます。

カントリーモデルは

  • 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 %>
4

1 に答える 1

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 を使用して、選択された国に一致するもののみを表示することです。

于 2013-01-04T02:28:59.473 に答える