我有一个Rails 4.2应用程序。在我的“新文档”表单中,我有一个select和一个包含collection_check_boxes的div。当用户更改select的值时,我使用AJAX重新填充包含复选框的div,以便可用的复选框根据在选择菜单中选择的项目而更改。 AJAX工作正常。
以下是检测选择更改时间的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没有显示正确的复选框。 / p>
我的问题是,如何在表单验证错误后显示正确的复选框?
答案 0 :(得分:0)
解决了!
在我的表单中,我添加了一个条件来检查是否有任何错误。如果有错误,我会根据选择中的所选项目手动填充复选框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 %>