Александр Борисов, 1 сентября 2014
Ruby on Rails пропагандирует использование REST: к одному URL в приложении должно быть привязано только одно действие. Например, в случае удаления какой-либо сущности, нужно выполнить удаление и вернуться на страницу всех сущностей через редирект. При этом желательно показать пользователю сообщение о том, что произошло. В приложениях на Ruby on Rails для этого в коде контроллеров используется flash
.
Задать flash-сообщение можно двумя способами, они эквивалентны:
По-умолчанию, flash-сообщения доступны во время следующего запроса. Это позволяет использовать их после редиректа:
По-умолчанию, flash знает только о двух видах сообщений при редиректе: notice
и alert
. Чтобы использовать свой тип сообщений при редиректе вызовите add_flash_types
:
При этом add_flash_types
не добавляет виды сообщений для обращения к ним через точку или через flash.now
(см. ниже).
Если нужно показать flash-сообщение только в текущем запросе, используйте flash.now:
Выводить flash-сообщения удобнее все в лейауте:
С помощью метода keep
можно сделать все flash-сообщения flash.keep
или только указанное flash-сообщение flash.keep(:notice)
текущего запроса доступными в следующем запросе.
С помощью метода discard
можно удалить все flash-сообщения flash.discard
или только указанное flash.discard(:error)
.
На самом деле в flash-сообщениях можно передавать не только строки, но и другие примитивы, которые вам нужны на этапе следующего запроса – числа, хэши, массивы и т.п.
Мысли о веб-разработке на Ruby on Rails: работа с кодом, приёмы, инструменты, организация процесса разработки.
Веб-разработка на Ruby on Rails, реализация сложных проектов
mailbox@cifronomika.ru
+7 (910) 535-99-11