2016-05-12 39 views
0

我有一个Rails 4.2应用程序。在我的“新文档”表单中,我有一个select和一个包含collection_check_boxes的div。当用户更改select的值时,我使用AJAX重新填充包含复选框的div,以便可用复选框根据选择菜单中选择的项目而改变。 AJAX工作正常。Rails 4.2:在表单验证错误后重新填充动态填充的东西

这里是JavaScript的选择发生变化时,检测:是,如果事情的形式验证失败,则显示

$(function() { 
    $(document).on('change', '#document_project_id', function(event) { 
    $.ajax('/populate_document_reviewer_list', { 
     type: 'GET', 
     dataType: 'script', 
     data: { 
     project_id: $("#document_project_id option:selected").val(), 
     } 
    }); 
    }); 
}); 

我的问题与错误的形式。在这个重新显示的表单中,用户对select的选择是预先填充的,但包含复选框的div显示默认选项,因为select上的onchange没有触发,所以我的AJAX不显示正确的复选框。

我的问题是,如何在表单验证错误后显示正确的复选框?

回答

0

解决了!

在我的表单中,我添加了一个条件来检查是否有任何错误。如果出现错误,我会根据select中的选定项目手动填充复选框div。如果没有错误,我将显示默认文本。

<% if @doc.errors.any? %> 
    <% if @doc.project.is_secret? %> 
    <%= f.collection_check_boxes(:reviewer_ids, @doc.project.disclosed_users.order(:first_name, :last_name), :id, :name_with_job_title) do |b| %> 
     <%= b.check_box %> <%= b.label %><br> 
    <% end %> 
    <% else %> 
    <%= f.collection_check_boxes(:reviewer_ids, User.order(:first_name, :last_name), :id, :name_with_job_title) do |b| %> 
     <%= b.check_box %> <%= b.label %><br> 
    <% end %> 
    <% end %> 
<% else %> 
    Select a project to see reviewers. 
<% end %>