2010-12-08 3 views
0

내 애플리케이션 도우미에 다음 코드가 있습니다.레일즈 도우미에서 세션 만들기

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

나는 당신이 그것을 기대하지 않았다 때 오류 다음 당신은 전무 개체를 얻을! Array의 인스턴스를 예상했을 수 있습니다. nil을 평가하는 중 오류가 발생했습니다. < <

일부 빠른 로깅과 나는 컨트롤러와 동작이 잘 작동하는 것을 볼 수 있습니다. 헬퍼에서 세션을 만들 수 없습니까?

답변

0

이러한 배열의 배열 (는 "경로의 스택"만약에 당신)를 개최 세션을 원하는 경우에 당신 session[:route]이 nil이 아닌 있는지 확인하기 위해 먼저 필요 : 그렇지 않으면

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

가 간단히 다음과 같이 할당하십시오.

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

또한 기호는 해시 키가 아닌 문자열로 사용해야합니다.

+1

첫 번째'if' 명령문을'session [: route] || = []'단축 할 수 있습니다. – edgerunner

+0

@edgerunner 추가되었습니다. 감사! –

0

당신이하고있는 방식은 틀릴 수도 있지만 잘못되었습니다. 이 코드가 처음 실행되면 세션 [ 'route']이 nil이됩니다. 할 수 있습니다

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

하지만 여기서 무엇을하려고합니까? 나는 당신이 여기서하고자하는 것을 성취하는 것이 더 좋을 것이라고 생각합니다.

관련 문제