会社のユーザを作成するためのフォームがrails 3.2にあります。各社にはサイトがあります。サイトはcollection_selectを介してユーザーに割り当てられ、各サイトにはチェックボックスを使用して選択されたいくつかの部門があります。ユーザーはサイトに属し、そのサイトの多くの部門に所属することができます。rails 3.2フォームのcollection_selectの値に応じて、チェックボックスのオプションを変更できない
サイトcollection_selectで選択した値に応じて変更するには、部門チェックボックスのオプションが必要です。
私は、collection_selectのonchangeを使用して、部門を含む部分を呼び出すようにしています。私はこれを稼働させることができましたが、会社のすべての部門のみを表示していました。個々のサイトごとの部門ではありません。私は選択されたサイトをパーシャルに渡す方法を理解していないので、正しい部門を返すことができます(これが可能であれば)。これまで
私のコードは次のとおりです。
フォーム:
<%= form_for @user, :url => front_admin_users_path do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<%= f.collection_select :role, User::ROLES, :to_s, :humanize %>
<%= f.collection_select :site_id, current_user.company.sites.all, :id, :name, {}, :onchange => "jQuery.get('/load_department')", :remote => true %>
<div id="department_frame"></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
users_controller.rb:
def load_department
respond_to do | format |
format.js {render :layout => false}
end
end
load_department.js.erb:
$("#department_frame").html("<%=j render(:partial =>"department") %>");
_department.html .erb:
<% current_user.company.sites.each do |site| %>
<% for department in site.departments %>
<%= check_box_tag "user[department_ids][]", department.id, current_user.department_ids.include?(department.id) %>
<%= department.name %>
<% end %>
は、私は解決策を見つけようとし日間グーグルましたが、まさに私が必要なものを見つけることができません。私が見つけた最も近いものは、Ryan Bateの動的コレクションです。これはgrouped_collection_selectメソッド(これは私がプロジェクトの別の部分で使ったメソッド)を使って改訂されましたが、これは選択ボックスを扱うようには見えません。どんな助けもありがとう。ありがとう。