Проверка ошибок AJAX не будет отображаться для сообщений Rails 5 - PullRequest
0 голосов
/ 28 декабря 2018

Когда я пытаюсь AJAX посты с неверными параметрами.Я не получаю ошибки проверки после сбоя отправки.

Я попытался добавить идентификатор в div, а затем заполнить его списком сообщений об ошибках, используя JS.Сбой отправки с ошибкой nilClass & отката в консоли.Я пытаюсь понять, почему он пытается создать сообщение, даже если AJAX вызывает его полный сбой.

post_js_error_validation.js

$(document).ajaxError(function (event, xhr, options, exc) {
let errors = JSON.parse(xhr.responseText);
let er = "<ul>";
for(let i = 0; i < errors.length; i++){
    let list = errors[i];
    er += "<li>" + list + "</li>"
}
     er += "</ul>";
$("#error_explanation").html(er);
});

post_form.html.erb

<%= form_for(@post, remote: true, :html => {multipart: true}) do |f| %>
   <div class="form-group">
    <% if @post.errors.any? %>
      <ul>
       <% @post.errors.full_messages.each do |error| %>
      <li><%= error %></li>
     <% end %>
    </ul>
   <% end %>
   <div id="error_explanation">
    </div>
  </div>
  <div class="form-group">
    <label>Post Title
      <small><span class="badge badge-danger">Required</span></small>
    </label>
    <%= f.text_field :post_title, class: 'form-control first_input', label: false %>
  </div>

  <div class="form-group">
    <div class="fileinput fileinput-new"  data-provides="fileinput">
  <span class="bttn-simple bttn-md bttn-primary btn-file"><span class="fileinput-new">Select Video</span><span class="fileinput-exists">Change Video</span><%= f.file_field :post_video, class: 'form-control', accept: 'video/*', label: false %></span>
      <span class="fileinput-filename"></span>
      <a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">&times;</a>
    </div>
  </div>

  <div class="form-group">
    <label>Message
  <small><span class="badge badge-danger">Required</span></small>
    </label>

    <%= f.text_area :post_body, class: 'form-control emojiarea', label: false %>

 </div>
  <div class="form-group">
    <label class="checkbox-container">Private Post <%= f.check_box :post_private, label: false %><span class="checkmark"></span></label>
 </div>

  <div class="form-group">
    <label class="checkbox-container">Show Location <%= f.check_box :show_post_location, label: false %><span class="checkmark"></span></label>
  </div>
  <div class="form-group">
    <%= f.submit @post.new_record? ? "Create Post" : "Change Post", data: {disable_with: "Creating Post...Please wait" }, class: 'bttn-material-flat bttn-md bttn-royal bttn-block' %>
  </div>
 <% end %>

posts_controller.rb

  def create
    @post = current_user.posts.build(story_params)

    respond_to do |format|
      if @post.save
        format.html { redirect_to @post, notice: 'Your post was created!' }
        format.json { render :show, status: :created, location: @post }
        format.js
      else
        format.html { render :new }
        format.json { render json: @story.errors, status: :unprocessable_entity }
        format.js
      end
    end
  end

create.js.erb

$('#dialog').modal('toggle');
$('#posts').append('<%= j render(@post) %>');
$('#dialog').modal('hide');
$('body').removeClass('modal-open');
$('.modal-backdrop').remove();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...