У меня есть приложение Rails, у которого есть пара форм внутри модалов. Это код модального представления.
<div class="modal fade" id="<%= htmlid %>" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<span class="modal-title" id="modalTitle"><%= title %></span>
</div>
<div class="modal-body bg-light">
<%= yield %>
</div>
</div>
</div>
</div>
У меня есть проверка в моей модели rails Topic
, и моя цель - показать сообщения об ошибках, если они есть, после отправки этой формы. Я не слишком знаком с JavaScript, и это похоже на то, что может потребоваться. У меня есть ошибки, отображаемые в JSON, но я не уверен, как получить этот ответ json и вставить его в представление.
Например, в моем методе создания, когда topi c не удается сохранить, мы генерируем ответ json, содержащий ошибки и их сообщения.
def create
@topic = @account.topics.build(topic_params)
authorize @topic
respond_to do |format|
if @topic.save
format.html { redirect_to topics_path, flash: { success: 'Topic successfully created.' } }
else
format.json { render json: @topic.errors, status: :unprocessable_entity }
end
end
end
Моя форма ничего особенного. Я знаю, как go об этом процессе, если я хочу перенаправить после отправки формы. Тем не менее, я бы хотел, чтобы запрос до go был выполнен и сообщение об ошибке отображалось без необходимости повторного обновления sh страницы или перенаправления и повторной визуализации модального сообщения с ошибками.
<%= form_tag topics_path, remote: true do %>
<div class="form-group">
<%= label_tag :name %>
<%= text_field_tag :name, "", class: 'form-control', id: 'topic' %>
</div>
<div class="float-right">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<%= submit_tag "Submit", class: 'btn btn-primary', id: 'submitTopic' %>
</div>
<% end %>
TLDR; Как мне получить JSON ответ от HTTP-запроса и подключить его к представлению Rails без обновления страницы?