Александр Борисов, 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