0

問題:投稿に属する正しいコメントを探しています

特定の投稿へのコメントに「いいね」機能(Facebookのように)を実装しようとしています。すでに同じ機能を投稿に実装していますが、「正しいコメントを指す」のは大変です。明確にするために、私の「like」関数は次の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)

ですから、問題はコントローラーにあると思います。

コメント_コントローラーでの私のようなアクションの開始時に、私は

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

3 に答える 3

1

このように呼んでください

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

ここで、@postは現在の投稿オブジェクトです

于 2012-11-21T08:26:01.677 に答える
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
于 2012-11-21T08:44:54.897 に答える
0

これ:

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

あなたの投稿はpost_idparamで識別され、コメントはidparamで識別されることを教えてくれます。したがって、likeメソッドは次のようになります。

def like
  @post = Post.find(params[:post_id])
  @comment = @post.comments.find(params[:id])
于 2012-11-21T08:07:11.287 に答える