Раньше (Rails 6, Zurb Foundation, Jquery 1) код ниже должно сработать. Пользователь отправлял форму, забывал свое имя, мы устанавливали переменную @error_message, а затем отображали 400 и возвращались, чтобы остановить действие. Когда он дошел до частичного (send_appointment_request.js.haml), в предупреждении браузера появилось всплывающее сообщение об ошибке.
Теперь (Rails 6, Bootstrap 5, Jquery 3), если мы используем состояние рендеринга: 400 и возвращаем, в консоли возникает ошибка, и всплывающее окно с предупреждением браузера никогда не открывается, чтобы отобразить переменную @error_message. Код попадает в партиал, но никогда не выполняется.
Если мы просто ВЕРНУЕМСЯ и не используем часть «состояние рендеринга: 400 и возврат», то появится сообщение об ошибке, потому что он отображается как код состояния 200.
Просто запутался, почему код работал раньше (мы отображали 400, а браузер все равно выдавал всплывающее сообщение об ошибке), и теперь ошибки кода.
Для объяснения проблемы показаны два снимка экрана.
РЕДАКТИРОВАТЬ: Я предполагаю, что это связано с отказом от ответа 400. отключить обратный вызов ошибки $.ajax(), который отправил удаленную форму. Но такого никогда раньше не случалось с Jquery 1 или Foundation.
Значит ли это, что мне всегда нужно будет отвечать с 200 кодами состояния, даже если отправленные данные недействительны (ошибка 422)?< /p>
Лучше сказать. Почему Rails оценивает мой код javascript только частично, когда это ответ 2XX, а не когда это ответ 4XX?
Код: Выделить всё
def send_appointment_request
respond_to do |format|
format.js do
if params[:name].blank?
@error_message = "Error: You forgot to include your name. Please try again."
render status: 400 and return
end
#
# Lots of Code Removed
#
@success_message = "Thanks for submitting your appointment request!"
end
end
end
Код: Выделить всё
- if @error_message
alert("#{sanitize @error_message}");
- else
alert("#{sanitize @success_message}");
[img]https://i.sstatic. net/4mQ261Lj.png[/img]
и вот код, который отображается в ошибке:

Подробнее здесь: https://stackoverflow.com/questions/786 ... -responses