Какой лучший способ заставить записи рельсов флеш-памяти сохраняться до следующего действия? - PullRequest
0 голосов
/ 04 сентября 2010

Я поставил код наподобие этого

flash[:task_loader] = flash[:task_loader]
flash[:task_loader_params] = flash[:task_loader_params]

в функции в моем контроллере, которую могут вызывать все мои действия. Это приводит к тому, что эти две флэш-записи сохраняются в FlashHash. (Я предполагаю, что этот довольно странный код работает, потому что '=' делает больше, чем просто присваивает значения.)

Мой вопрос: есть ли лучший способ сделать это? Что-то вроде

flash[:task_loader].pin

1 Ответ

0 голосов
/ 04 сентября 2010

Flash - это удобная оболочка для хранения данных в файлах cookie и их истечения в следующем запросе. Так что ваши уведомления будут работать в течение 2 (или нескольких) циклов ответа на запрос.

Если вы хотите больше настойчивости, вы можете использовать сессию:

session[:task_loader] = my_task_loader

Обратите внимание, что один файл cookie может содержать только 4 КБ данных.

(Полагаю, странно выглядящий код работает потому что '=' делает больше, чем просто присваивать значения.)

Это потому, что это не просто присвоение, а метод []=, с сигнатурой, подобной этой:

def []=(k, v)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...