Rails: страница простаивает и не может быть нажата после отправки модальной формы

#ruby-on-rails #ajax

#ruby-on-rails #ajax

Вопрос:

У меня есть форма внутри `bootstrap modal:

 <div class="modal fade" id="form_modal" tabindex='-1'>
  <%= simple_form_for @detail_question, remote: true do |f| %>
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Question</h4>
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">amp;times;</button>
        </div>
        <div class="modal-body">
          <%= f.error_notification %>
          <div class="form-inputs">
            <span> <span id="characterLeft"></span>.</span>
            <%= f.input :content, label: false %>

          </div>
          <div id="formModal">
            <%= render partial: 'layouts/messages' %>
          </div>
        </div>
        <div class="modal-footer">
          <%= f.button :submit, "Ask", class:" btn btn-primary" %>
        </div>
      </div>
    </div>
  <% end %>
</div>
  

Метод создания контроллера:

 def create
  @detail_question = DetailQuestion.new(question_params)

  respond_to do |format|
    if @detail_question.save
      flash.now[:success] = "Question was successfully sent!"
      format.js { render 'create.js.erb' }
    else
      flash.now[:alert] = "Something went wrong!"
      format.js { render 'create.js.erb' }
    end
  end
end
  

create.js.erb

 <% if @detail_question.save %>
  $("#flash").html("<%= escape_javascript(render partial: 'layouts/messages') %>");
  $("#detail_questions_<%= @detail_question.product.id %>").html("<%= escape_javascript(render partial: 'detail_questions/detail_questions', locals: { product: @detail_question.product } ) %>");
<% else %>
$("#formModal").html("<%= escape_javascript(render partial: 'layouts/messages') %>");
<% end %>
  

Когда я отправляю форму, модал закрывается и создает вопрос, отображает флэш-сообщение, а также отображает часть, как это предполагается. Но единственная ошибка, с которой я сталкиваюсь… то, что страница загружается как недоступная для нажатия и бездействующая, пожалуйста, посмотрите на изображение ниже.

Есть идеи, что я могу делать неправильно?

введите описание изображения здесь

Комментарии:

1. Есть ли у вас какие-либо ошибки в консоли js? Что находится в журнале вашего сервера rails для действия create?

2. Спасибо за ответ @Vasilisa, нет, абсолютно никакого… это странная часть, она должна полностью отображать часть. Есть идеи, что может быть не так?

3. Привет, @Vasilisa, ты думаешь, эта проблема из-за turbolinks?

4. Не уверен. Попробуйте удалить все из create.js и оставить там только alert('It works') строку

5. Я сделал, и предупреждение действительно отображается при отправке формы.

Ответ №1:

Короче говоря — проблема была в модальном фоне. Решается путем добавления

 $('#form_modal').modal('hide') 
$('.modal-backdrop').remove(); 
  

для создания.js.rb