Используем flash в приложении на Ruby on Rails

Александр Борисов, 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-сообщениях можно передавать не только строки, но и другие примитивы, которые вам нужны на этапе следующего запроса – числа, хэши, массивы и т.п.

Смотрите также


comments powered by Disqus
Блог Цифрономики

Мысли о веб-разработке на Ruby on Rails: работа с кодом, приёмы, инструменты, организация процесса разработки.

@cifronomika
RSS


Веб-разработка на Ruby on Rails, реализация сложных проектов
mailbox@cifronomika.ru
+7 (910) 535-99-11