Создание сессии в Rails Helper - PullRequest
0 голосов
/ 08 декабря 2010

У меня в приложении есть следующий код.

  route = ActionController::Routing::Routes.recognize_path(current_uri)
  controller = route[:controller]
  action = route[:action]
  session['route']<< [controller.to_s,action.to_s]

Я получаю следующую ошибку У вас есть нулевой объект, когда вы его не ожидали!Возможно, вы ожидали экземпляр Array.Произошла ошибка при оценке nil. << </p>

Некоторые быстрые записи в журнал, и я вижу, что контроллер и действия работают нормально.Разве вы не можете создавать сеансы в помощниках?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2010

Если вы хотите, чтобы сессия содержала массив этих массивов («стек маршрутов», если хотите), то сначала вам нужно убедиться, что session[:route] не ноль:

session[:route] ||= []
session[:route] << [controller.to_s, action.to_s]

В противном случае просто присвойте его:

session[:route] = [controller.to_s, action.to_s]

Кроме того, вы должны использовать символы в качестве ключей хеша, а не строки.

0 голосов
/ 08 декабря 2010

Вы можете, но то, как вы это делаете, неверно.Когда этот код выполняется в первый раз, он получает сессию ['route'] как nil.Вы можете сделать

session['route'] = [controller.to_s, action.to_s]

Хотя, что вы пытаетесь сделать здесь?Я полагаю, что лучше достичь того, что вы намереваетесь сделать здесь.

...