我有两个模型Employee
,EmployeeDepartment
。我创建了一个动态选择菜单,因此当我选择一个部门时,它会根据该部门使用以下代码过滤员工simple_form
<%= f.input :employee_id , collection: @departments, as: :grouped_select, group_method: :employees, include_blank: false %>
注意:@departments = EmployeeDepartment.order(:name)
我想做的是:
在进行动态选择之前,我使用此代码来获取特定员工
<%= f.association :employee, :collection => @supervisors_list, :label_method => :full_name, :value_method => :id, include_blank: false %>
请注意:@supervisors_list = Employee.where('guidance_supervisor' => true).order(:first_name)
guidance_supervisors.js.coffee
jQuery ->
$('#guidance_supervisor_employee_id').parent().hide()
employee = $('#guidance_supervisor_employee_id').html()
$('#guidance_supervisor_employee_department_id').change ->
department = $('#guidance_supervisor_employee_department_id :selected').text()
escaped_department = department.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
options = $(employee).filter("optgroup[label='#{escaped_department}']").html()
if options
$('#guidance_supervisor_employee_id').html(options)
$('#guidance_supervisor_employee_id').parent().show()
else
$('#guidance_supervisor_employee_id').empty()
$('#guidance_supervisor_employee_id').parent().hide()
添加动态选择后,我无法使用@supervisors_list
使菜单获取所有员工。我需要能够再次使用@supervisors_list
,有没有办法实现这一目标?
答案 0 :(得分:0)
您需要使用Gon之类的内容。它具有watch
功能,可以帮助重新加载数据而无需重新加载页面see here
您的代码问题只是它过滤页面而不重新加载它。所以基本上是@supervisors_list
构建的服务器端,你可以:
@supervisor_list
(gon watch或直接使用jQuery .ajax
)@supervisor_list
数据添加到您的网页javascript中,并在部门过滤后过滤(也可以通过gon或read this railscast)答案 1 :(得分:0)