회사에 사용자를 생성하기위한 양식이 레일스 3.2에 있습니다. 각 회사에는 사이트가 있습니다. 사이트는 collection_select를 통해 사용자에게 할당되고 각 사이트에는 확인란을 사용하여 선택된 여러 부서가 있습니다. 사용자는 사이트에 속하며 해당 사이트의 여러 부서에 속할 수 있습니다.레일스 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 메소드 (프로젝트의 다른 부분에서 사용 했음)를 사용하여 개정 된 것을 선택하는 것이지만, 이것은 선택 상자를 다루지 않는 것 같습니다. 어떤 도움을 주시면 감사하겠습니다. 감사.