【问题标题】:Rails 4.2: repopulating a dynamically populated thing after form validation errorRails 4.2:表单验证错误后重新填充动态填充的东西
【发布时间】:2016-05-12 00:08:39
【问题描述】:

我有一个 Rails 4.2 应用程序。在我的“新文档”表单上,我有一个选择和一个包含 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 显示正确的复选框没有被调用。

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

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    解决了!

    在我的表单中,我添加了一个条件来检查是否有任何错误。如果有错误,我会根据选择中的选定项手动填充复选框 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 %>
    

    【讨论】:

      猜你喜欢
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      相关资源
      最近更新 更多