Для флэш-памяти сначала нужно различать рендер и redirect_to, потому что флэш-сообщение удаляется только после перенаправления.Это у вас хорошо.
Затем, если вы хотите, чтобы сообщение отображалось в следующем запросе после перенаправления, используйте flash [].Если вы хотите, чтобы сообщение отображалось в текущем запросе, используйте flash.now [].
Посмотрите, поможет ли это.
Если вы действительно застряли, вы можете очистить его в представлении - хотя вы загружаете технический долг с помощью таких обходных приемов - ноесли часы тикают прямо сейчас:
- flash.slice(:notice, :message, :error, :success, :warning, :failure).each do |level, value|
- if value.present?
%div{:class => "flash #{h level}"}
= h value
- flash[level] = nil # set to nil in case the flash was set outside of a redirect