2012-11-21 1 views
0

문제 오른쪽 항목 찾기 : 게시물에 속하는 권리 의견을 찾고를 내가 구현하려고레일 : 모델의

A A에 대하여 코멘트를위한 기능 (단지는 페이스 북에서 좋아) "와 같은" 특정 게시물. 내 게시물에 이미 동일한 기능을 구현했지만 "올바른 의견을 말하면"힘든 시간을 보내고 있습니다. 다음 GET 호출을 내 "와 같은"기능의 결과를 명확히하기 위해 :

http://localhost:3000/posts/11/comments/4/like 

그러나 실제로 나는 나의 길을 확인

/posts/4/comments/11/like 

전화를하기로했다, 그리고 그것은 나를

like_post_comment GET /posts/:post_id/comments/:id/like(.:format) 
바로 보인다

그래서 컨트롤러에 문제가 있다고 생각합니다. comments_controller 내 같은 행동의 시작 부분에서

, 나는
def like 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.find(params[:comment]) 

내가이 잘못 생각합니다,하지만 난 왜 나 그것을 해결하는 방법을 모르겠어요. 다른 액션은 비슷한 방식으로 로컬 변수 @ post@comment을 설정하지만 올바르게 작업합니다.

def create 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.create(params[:comment]) 

def destroy 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.find(params[:comment]) 

감사합니다. 정말 고맙습니다!

편집 : 나는 의견을 내 링크를 렌더링하는 방법을

<td><b><%= link_to 'like', like_post_comment_path(comment) %></b></td> 
+0

포스트와 컨트롤러에 같은 조치를 교체합니다. – Hck

+0

@Hck 업데이트를 확인하십시오! –

답변

1

인이

<%= link_to 'like', like_post_comment_path(@post, comment) %>

같은

def like 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.find(params[:id]) 
0

이 :

/posts/:post_id/comments/:id/like(.:format) 

귀하의 게시물이 post_id를의 PARAM으로 식별되는 것을 저에게 말한다, 당신의 의견은 아이디 PARAM로 식별됩니다 . 따라서 귀하와 같은 방법은 다음과 같아야합니다 @post 현재 포스트 객체

+0

여전히 post_id 및 id (주석)가 전환됩니다. 당신의 URL에 –

+0

, 어쩌면. 그건 당신이 그 URL을 만드는 방식과 관련이 있습니다. 아마도 like_post_comment_url이라는 도우미를 사용하고있을 것입니다. 이것을 like_post_comment_url (@comment, : post_id => @post)라고 부릅니다.id) 또는 귀하의 경우 가장 가까운 변종입니다. – ChuckE

+0

방금 ​​당신의 편집을 보았습니다. 하나의 인수 만 전달하는 경우 post_id는 어디에서 제공됩니까? 중첩 된 경로를 사용하고 있습니까? 그렇지 않다면 어쩌면 당신이 (당신의 예에 딱 맞아야합니다) – ChuckE

1

전화는

<td><b><%= link_to 'like', like_post_comment_path(comment) %></b></td> 
에서 링크를 교체

to

<td><b><%= link_to 'like', like_post_comment_path(@post, comment) %></b></td> 

그리고 당신이보기에 같은 링크를 렌더링하는 방법을

def like 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.find(params[:id]) 
    # ... 
end