Подтвердить что ты не робот

Получение хэш-функции Flash сохраняется через перенаправления

Мой основной вариант использования - сделать некоторую обработку, установить flash[:notice], а затем перенаправить на новую страницу. Из того, что я могу сказать, перенаправляет reset флеш-тег (пожалуйста, поправьте меня, если я ошибаюсь). Есть ли способ настойчивости? Использование сеансов не является вариантом, и я взломал проблему, используя куки файлы, но я думаю, что там будет лучший способ.

4b9b3361

Ответ 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 здесь (Метод защиты от экземпляра: используйте внизу)