您的表单很好,除了第一行(并且您不需要 user_id 的隐藏字段,这是通过您的关系完成的):
<%= form_for(@comment) do |f| %>
应该:
<%= form_for([@post, @comment]) do |f| %>
现在,您呈现一个用于创建或更新特定帖子的评论的表单。
但是,您应该更改模型和控制器。
class Post
has_many :comments
end
class Comment
belongs_to :post
end
这将使您可以访问@post.comments,显示属于特定帖子的所有评论。
在您的控制器中,您可以访问特定帖子的评论:
class CommentsController < ApplicationController
def index
@post = Post.find(params[:post_id])
@comment = @post.comments.all
end
end
通过这种方式,您可以访问特定帖子的评论索引。
更新
还有一件事,你的路线也应该是这样的:
AppName::Application.routes.draw do
resources :posts do
resources :comments
end
end
这将使您可以访问 post_comments_path (以及更多路线)