2013-07-17 3 views
0

내 앱을 빠르게 분해하려면 : 노래, 댓글 및 사용자 모델이 있습니다. 사용자는 노래를 업로드하고 댓글을 작성할 수 있습니다.정의되지 않은 메서드 'strftime'for nil : NilClass [rails 4]

노래를 제출 (생성) 한 후 "정의되지 않은 메소드`strftime 'for nil : NilClass"오류가 발생하는 것 같습니다. show#songs.html.erb으로 가면 아래에 코멘트 코드가 표시됩니다. 라이언 베이츠 (Ryan Bates)가 어떻게 그의 코멘트를하고 내 코드가 동일한 지 살펴 보았습니다. strftime이 작동하지 않는 이유를 모르겠습니다. 알려 주시기 바랍니다 :)

참고 : 그것은 내가 레일 4를 실행하고있어 가치가 무엇

전체 오류 메시지 :

NoMethodError in Songs#show 

Showing /Users/apane/Downloads/leap/app/views/songs/show.html.erb where line #34 raised: 

undefined method `strftime' for nil:NilClass 

Extracted source (around line #34): 

<% for comment in @song.comments %> 
<div class="comment"> 
<strong><%= link_to_unless comment.site_url.blank?, h(comment.author_name), h(comment.site_url) %></strong> 
<em>on <%= comment.created_at.strftime('%b %d, %Y at %H:%M') %></em> 
<%=simple_format comment.content %> 
<p> 
<% if can? :update, comment %> 
+0

'created_at'이 작동하지 않습니다. 가능한 원인은'Comment' 모델에서 자동으로 필드를 채우지 않는다는 것입니다 (데이터베이스에서'NULL'이고 Ruby에서'nil'). –

+0

Neil, 어떻게 자동으로 채울 수 있습니까? 컨트롤러에 추가해야하는 코드 줄이 있습니까? – Apane101

답변

3

comment.created_at이 nil - 이것은 당신의 문제입니다. 코멘트를 작성했지만 을 저장하지 않았으므로은 아직 입니다. created_at 필드는 저장시에만 채워집니다.

+0

나는이 코드 줄을 노래 컨트롤러 "@comment = @ song.comments.build"에 추가했습니다. 이것은 여러분이 지적한 것처럼 문제가있는 곳입니다. 어떻게 코멘트를 저장할 수 있습니까? @ comment.save 등. 아마도? – Apane101

+0

안녕하세요, 제가 드릴 수있는 조언 중 하나는 새로운 응용 프로그램을 생성하고 비계를 생성하는 것입니다. 예를 들어 'rails generate scaffold Comment user : integer content : string'- 생성 된 코드로 가서 어떻게해야하는지 보겠습니다. 일 - 나는 그것이 매우 좋은 교훈이 될 수 있다고 생각한다 - 즐긴다 :) – obenda

관련 문제