2016-05-12 5 views
0

私はRails 4.2アプリケーションを持っています。私の "新しい文書"フォームには、selectとdivにcollection_check_boxesが含まれています。ユーザーがselectの値を変更すると、AJAXを使用してチェックボックスを含むdivを再作成し、selectメニューで選択されている項目によって使用可能なチェックボックスが変わるようにします。 AJAXは正常に動作しています。私の問題は、フォームで何かが検証に失敗した場合、エラーのあるフォームが表示されていることをRails 4.2:フォーム検証エラー後に動的に生成されたものを再投入する

$(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(), 
     } 
    }); 
    }); 
}); 

次のとおりです。ここで

は、選択の変更をするとき検出するJavascriptのです。この再表示されたフォームでは、selectのユーザー選択はあらかじめ設定されていますが、selectのonchangeが発生しなかったため、チェックボックスを含むdivがデフォルトの選択肢を表示します。

私の質問は、フォーム検証エラーの後に正しいチェックボックスを表示するにはどうすればいいですか?

答えて

0

解決済み!

私のフォームでは、エラーがあったかどうかを確認する条件を追加しました。エラーがある場合は、selectの選択項目に基づいてcheckbox 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 %> 
関連する問題