Уведомления
Очистить всё
Фронт в Rails
5
Сообщения
4
Пользователи
0
Реакции
681
Просмотры
19 февраля 2023 12:49
Новое приложение на Rails 7.0, Turbo из коробки. Форма создания проекта, при ошибке валидации делаю как привык:
def create
@project = Project.new(project_params)
if @project.save
redirect_to @project
else
render :new
end
end
Успешное сохранение работает, а при ошибке страница просто не меняется, ошибок не видно. В консоли браузера Turbo пишет, что ответ на форму должен быть редиректом. Откатываться на rails-ujs?
4 ответа
19 февраля 2023 13:49
Откатываться не надо, нужно поменять статус. Turbo рисует ответ на отправку формы, только если статус 4xx или 5xx, а render :new по умолчанию отдаёт 200:
if @project.save
redirect_to @project
else
render :new, status: :unprocessable_entity
end
После этого форма с ошибками появится на месте. Генератор scaffold в 7.0 уже так делает, можно подсмотреть.
26 февраля 2023 14:06
Системный тест на эту форму, если он есть, тоже мог молча проходить. Проверяйте текст ошибки через have_content, а не отсутствие редиректа