def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(params[:comment])
redirect_to post_path(@post)
end
def destroy
@post = Post.find(params[:post_id])
@comment = @post.comments.find(params[:id])
@comment.destroy
redirect_to post_path(@post)
end
質問する
2182 次
2 に答える
1
それはルーティングに関係しています。/comments/:id などのコントローラーのみをルーティングする場合は、params[:id] を使用してパラメーターを取得するだけで済みますが、複数のコントローラーと複数の ID が含まれていてアクセス可能である場合は、次のようになります。 /posts/:id/comments/:comment_id :アクセスする :id の混乱を避けるため。
def destroy
@post = Post.find(params[:id])
@comment = @post.comments.find(params[:id])
@comment.destroy
redirect_to post_path(@post)
end
Rails はどの :id を取得するかを認識していないため、上記のコードは非常に問題になります。
于 2012-10-11T15:39:12.780 に答える
0
ここに CommentsController の一部が表示されていると思います。そして、各コメントは投稿に属していると仮定します。したがって、id
ここではコメント (モデル) がpost_id
参照され、投稿は参照されます。Comment および Post モデルを詳しく調べてください。
于 2012-10-11T15:35:37.943 に答える