2011-10-12 13 views
0

내 레일 2.3.2 응용 프로그램에서이 이상한 오류가 발생했습니다.NoMethodError in Rails 2.3.2 app

NoMethodError in Timesheet#index 

undefined method '>=' for nil:NilClass 

Extracted source (around line #27): 

24:  for alog in act_logs 
25:   if alog.user_id == session[:user_id].id 
27:   if(alog.log_date>[email protected]_of_week()&& alog.log_date<[email protected]_of_week()) 

는 지금까지 내가 추측 할 수로서, 나는 alog.log_date 또는 @dt.beginning_of_week이 전무 중 하나라고 생각합니다. 그러나 빠른 검사 직전 라인 # 27 (여기에 포함되지 검사)는 다음과 같은 값을 보여줍니다

#alog.log_date 
Wed, 09 Feb 2011 

#@dt.beginning_of_week() 
Mon, 10 Oct 2011 

이제 이러한 값 중 어느 것도 내가 라인 # 27이 undefined method >= for nil:NilClass 오류가 왜 전무없는 경우. 너희들이 내가 이상한 이유를 궁금해하는 이유는 ... 왜냐하면 ...
1. == 연산자를 사용하면 모든 것이 정상이다. >, <과 같은 다른 연산자는 동일한 오류를 생성합니다.
2.이 코드는 다른 컴퓨터에서 작동합니다.

여기서는 코드 문제라고 생각하지 않습니다. Ruby와 관련이 있거나 Rails 설치 문제 일 수 있습니까? 이러한 버그를 잡을 수

답변

2

오류가 alog.log_date가 전무 것을 정확하게 의미 정수 클래스에 존재한다. alog.log_date>[email protected]_of_week()alog.log_date.>=(@dt.beginning_of_week())과 동일합니다. 즉,>는 메소드 호출 일뿐입니다 (일부 구문 설탕 포함). 후자는 nil이 될 경우, 대신이 같은 것을 얻을 것 : 당신이 경우,

if (alog.log_date && alog.log_date >= @dt.beginning_of_week() && alog.log_date<[email protected]_of_week()) 

그러나 :

ArgumentError: comparison of Time with nil failed 

당신은 행의 시작의 날짜에 대한 생존 확인을 추가 할 수 있습니다 날짜가 필드에 대한 기본값 및/또는 존재 확인을 추가하려고 할 수 없다고 생각하면 안됩니다.

1

좋은 방법은

또는 하나의 로그 값을 기록하는 더 간단, 그냥 둬야 디버거를 연결하는 것입니다

Rails.logger.info(variable_to_log)

오류 줄 앞에

PS

동등한 연산자 '=='와 (과) 같이 작동합니다.이 메서드는

입니다.

하여 비교 연산자는

+0

감사합니다. sarva !! 오늘 새로운 것을 배웠다 !! :피 – rstarter