Всплывающее / модальное при отправке формы, в зависимости от того, какая информация была введена в форму - PullRequest
0 голосов
/ 11 февраля 2019

Я ищу совет о том, как лучше всего реализовать всплывающее окно / модальное при отправке формы в Ruby / Rails.

У меня есть простая форма с кнопкой отправки, которая работает, как и ожидалось (обновлениясоответствующие поля в базе данных).

Мне выдвинули дополнительные требования: в зависимости от информации, вводимой в форму, при отправке формы должно быть модальное / всплывающее окно.Обзор различных требований для этого приведен ниже:

  1. Когда определенные поля обновляются, но информация конфликтует с более ранним обновлением (например, поле даты обновляется, но другая дата имеетуже было установлено ранее), появится всплывающее окно / модальное сообщение с ошибкой, и при нажатии кнопки «ОК» вернется к форме с любым введенным вводом (т. е. не обновит форму).Существует три разных сценария с тремя разными типами ошибок, поэтому необходимы три разных сообщения об ошибках.

  2. Когда некоторые поля обновляются, но другие остаются пустыми, всплывающее окно / модальное с «Вы уверены?»Тип сообщения появится.Опять же, есть три разных сценария, поэтому необходимы три разных сообщения.Там будут кнопки «Отмена» и «ОК»: «Отмена» вернется к форме с любым введенным вводом, ОК отправит форму.

  3. Наконец, если форма обновлена ​​без проблем (то есть ни одно из вышеперечисленного не соответствует действительности), тогда форма будет отправлена ​​без всплывающего окна или модального сообщения (т. е. стандартное представление формы).У меня есть семь различных сценариев / требований, и я изо всех сил пытаюсь найти подходящий способ для реализации этого.Первое, что приходит на ум, это то, что будет много if-утверждений, но я чувствую, что должен быть более эффективный способ сделать это.В коде, на который я смотрел (было сделано до того, как я завладел проектом), есть несколько модалей, которые используют button_tag, но я не знаю, захочу ли я использовать тот же формат в форме.

1 Ответ

0 голосов
/ 11 февраля 2019

Для первого сценария вы можете посмотреть реализацию собственных проверок на вашей модели ActiveRecord, https://guides.rubyonrails.org/active_record_validations.html#custom-methods. Данные формы будут отправлены через AJAX, проверьте ваш ответ JSON на наличие ошибок, покажите модальный с ошибками, если таковые имеются.

Для второго сценария я бы добавил проверки на стороне клиента.Пусть ваш JS проверит поля при отправке формы, если они пустые, покажите «Вы уверены?»покадрово.Если они нажимают «Да», то мы переходим к первому сценарию, проверяя наличие ошибок.

Наконец, если форма отправлена ​​успешно, очистите все поля с помощью JS и покажите сообщение об успехе.

...