#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