2012-11-20 1 views
1

블로그에있는 '게시물'/ '의견'관계와 관련이없는 중첩 된 자원이 있습니다.중첩 자원, '작성'양식과 동일한 페이지에있는 형제를 나열하십시오.

게시물에 대한 #show 이벤트에서 새 댓글에 대한 양식을 표시하고 그 아래에 해당 게시물에 대한 이전 댓글이 모두 표시됩니다.

def show 
    @post = Post.find(params[:id]) 
    @comment = @post.comments.build 

지금이 가진 문제는 내가 지금 내 @의 page.comments 수집 내부 빈, 저장되지 않은 엔티티를 가지고있다 : 컨트롤러 내에서

내 #show 방법은 다음과 같이 보인다. 결과적으로 나는 내 의견을 나열 할 때 내 의견을 같이하고 나는 비슷한 것을한다.

<%= comment.created_at.strftime("%a, %d %b %Y %H:%M:%S") %> 

내가 던진 예외 얻을 : 나는 그래서 내 #show 컨트롤러를 전환하여이 문제를 바로 잡기 위해 노력했다

undefined method `strftime' for nil:NilClass 

를이 포스트 객체를 통해없는 범위에게 새로운 코멘트를 수행하지만, 난 여전히 실행하는 것이 유효성 검사 오류가있는 양식으로 다시 리디렉션 된 경우 같은 문제가 다시 발생합니다.

누구든지 조언을 해줄 수 있습니까?

답변

0

동일한 문제가있었습니다. 실제로 콜렉션에 추가하지 않고 콜렉션을 통해 하위 오브젝트를 빌드하는 합법적 인 방법은없는 것 같습니다.

그래서 대신 :

@post = Post.find(params[:id]) 
@comment = @post.comments.build 

내가 할 :

@post = Post.find(params[:id]) 
@comment = Comment.new(:post => @post) 

그것은 같은 방법으로 자식 개체를 구축하지만, 그래서 당신의 목록이없이 빌드 부모 컬렉션에 추가하지 않습니다 오류. 내가 어떻게하고 싶은지는 모르겠지만 워크 플로우의 변화를 최소화하면서 똑같은 일을 수행하는 가장 좋은 방법 인 것 같습니다.