Удаленная форма Rails UJS оценивает JS только для ответов 2XX, но не для ответов 4XXJquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Anonymous
 Удаленная форма Rails UJS оценивает JS только для ответов 2XX, но не для ответов 4XX

Сообщение Anonymous »

Были ли изменения в том, как JQuery 3 и Jquery 1 обрабатывали ошибки удаленной формы в Rails?
Раньше (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
send_appointment_request.js.haml

Код: Выделить всё

- 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Jquery»