簡體   English   中英

Rails 4.2:表單驗證錯誤后重新填充動態填充的東西

[英]Rails 4.2: repopulating a dynamically populated thing after form validation error

我有一個Rails 4.2應用程序。 在“新文檔”表單上,我有一個select和一個包含collection_check_boxes的div。 當用戶更改選擇的值時,我使用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(),
      }
    });
  });
});

我的問題是,如果表單中的某些內容未能通過驗證,則會顯示帶有錯誤的表單。 在此重新顯示的表單中,用戶對選擇的選擇已預先填充,但是包含復選框的div顯示了默認選擇,因為未激活選擇上的onchange,因此未調用顯示正確復選框的AJAX。

我的問題是,在表單驗證錯誤后如何顯示正確的復選框?

解決了!

在我的表單中,我添加了一個條件來檢查是否存在任何錯誤。 如果有錯誤,我將根據選擇項中的選定項手動填充復選框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 %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM