Мой основной вариант использования - сделать некоторую обработку, установить flash[:notice]
, а затем перенаправить на новую страницу. Из того, что я могу сказать, перенаправляет reset флеш-тег (пожалуйста, поправьте меня, если я ошибаюсь). Есть ли способ настойчивости? Использование сеансов не является вариантом, и я взломал проблему, используя куки файлы, но я думаю, что там будет лучший способ.
Получение хэш-функции Flash сохраняется через перенаправления
Ответ 1
Флэш-хэш сохраняется только для одного перенаправления или рендеринга. Поэтому вы должны быть в порядке с настройками по умолчанию.
Если вам нужно сохранить хэш-флэш для другого запроса/перенаправления, вы можете вызвать flash.keep.
flash.keep # keep the entire flash hash around for an extra request.
flash.keep(:notice) # keep just flash[:notice] for an extra request.
Ответ 2
Что-то, о чем нужно знать, по крайней мере, в Rails v3.2.1, заключается в том, что флеш будет сохраняться через перенаправление, если его вообще не направить по крайней мере на 1 переадресацию и загрузить тот же вид после. Это псевдо-код моего недавнего опыта:
def some_action
(code that may set a flag to redirect 1 time)
redirect_to action_path if(redirect_flag)
....
end
Выполнение этого приведет к тому, что флэш [: сообщение] будет присутствовать независимо от перенаправления.
def some_action
logger.debug("Flash[:message] #{flash[:message]}")
(code that may set a flag to redirect 1 time)
redirect_to action_path if(redirect_flag)
....
end
Во время отладки с помощью регистратора, ссылающегося на flash [], он будет отображаться только тогда, когда перенаправление не произойдет. Я мог видеть, что это проблематично, если вы добавили ссылку на flash перед перенаправлением и потеряли ее по строке без видимых причин.
См. ruby docs здесь (Метод защиты от экземпляра: используйте внизу)