2012-11-21 104 views
0

問題:尋找屬於後右評論Rails的:尋找合適的項目在模型

我想實現一個「喜歡」功能(就像在Facebook)上一個評論具體的帖子。我已經爲我的帖子實施了相同的功能,但「指出正確的評論」給我很難。爲了澄清,我的「喜歡」功能導致以下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

<td><b><%= link_to 'like', like_post_comment_path(comment) %></b></td> 
更換您的鏈接

<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 
0

這樣的:

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

告訴我,你的文章是由POST_ID PARAM識別,您的評論是由ID PARAM標識。因此,你喜歡的方法應該是這樣的:

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

仍然會切換post_id和id(評論)。 –

+0

在你的網址,也許。這與您構建該網址的方式有關。可能你正在使用一個名爲like_post_comment_url的助手。像這樣調用它:like_post_comment_url(@comment,:post_id => @post。ID)還是您的案例中最接近的變體。 – ChuckE

+0

我剛剛看到你的編輯。如果您只向助手傳遞一個參數,那麼post_id在哪裏?你使用嵌套路線嗎?如果沒有,也許你應該(它適合你的例子) – ChuckE

1

這樣稱呼它

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

其中@post是當前post對象