Ruby on rails Ruby/Rails:如何插入post\u id和user\u id?

Ruby on rails Ruby/Rails:如何插入post\u id和user\u id?,ruby-on-rails,syntax,comments,belongs-to,posts,Ruby On Rails,Syntax,Comments,Belongs To,Posts,我读了这本书,它对第一步很有帮助,现在我在第二步。我需要控制器和表单方面的帮助 假设这是我的模型: User has_many :posts has_many :comments Post belongs_to :user has_many :comments Comment belongs_to :user belongs_to :post 这些是我的桌子: User id Post id user_id Comment id user_id post_id

我读了这本书,它对第一步很有帮助,现在我在第二步。我需要控制器和表单方面的帮助

假设这是我的模型:

User
 has_many :posts
 has_many :comments

Post
 belongs_to :user
 has_many :comments

Comment
 belongs_to :user
 belongs_to :post
这些是我的桌子:

User
 id

Post
 id
 user_id

Comment
 id
 user_id
 post_id
在初始帖子中,通过将以下内容添加到控制器中的“创建”部分,用户ID将自动与内容一起添加:

@post=当前用户.post.build(参数[:post])

如果评论同时属于用户和帖子,如何使其自动添加帖子id和用户id?目前,我似乎只能通过以下操作使其插入用户id:

当前用户.comments.build(参数[:comment])

我不熟悉rails。我不认为最好的方法是让字段可以访问,并在表单中添加一个隐藏字段,难道没有其他方法吗

以下是我更新的路线:

                  users GET    /users(.:format)                                           users#index
                        POST   /users(.:format)                                           users#create
               new_user GET    /users/new(.:format)                                       users#new
              edit_user GET    /users/:id/edit(.:format)                                  users#edit
                   user GET    /users/:id(.:format)                                       users#show
                        PUT    /users/:id(.:format)                                       users#update
                        DELETE /users/:id(.:format)                                       users#destroy
               sessions POST   /sessions(.:format)                                        sessions#create
            new_session GET    /sessions/new(.:format)                                    sessions#new
                session DELETE /sessions/:id(.:format)                                    sessions#destroy
   Post_comments GET    /posts/:Post_id/comments(.:format)          comments#index
                        POST   /posts/:Post_id/comments(.:format)          comments#create
 new_Post_Comment GET    /posts/:Post_id/comments/new(.:format)      comments#new
edit_Post_Comment GET    /posts/:Post_id/comments/:id/edit(.:format) comments#edit
     Post_Comment GET    /posts/:Post_id/comments/:id(.:format)      comments#show
                        PUT    /posts/:Post_id/comments/:id(.:format)      comments#update
                        DELETE /posts/:Post_id/comments/:id(.:format)      comments#destroy
          posts GET    /posts(.:format)                                   posts#index
                        POST   /posts(.:format)                                   posts#create
       new_Post GET    /posts/new(.:format)                               posts#new
      edit_Post GET    /posts/:id/edit(.:format)                          posts#edit
           Post GET    /posts/:id(.:format)                               posts#show
                        PUT    /posts/:id(.:format)                               posts#update
                        DELETE /posts/:id(.:format)                               posts#destroy
                   root        /                                                          static_pages#home
                 signup        /signup(.:format)                                          users#new
                 signin        /signin(.:format)                                          sessions#new
                signout DELETE /signout(.:format)                                         sessions#destroy
                  start        /start(.:format)                                           posts#new

我发现最好的评论方式是Ryan Bates在railscasts上介绍的

如果您正在执行
Post.comments.build
如果您正在执行
当前用户.comments.build
操作,则需要在路由中执行此操作

resources :user do
  resources :comments
end

您可以向构建方法发送属性:
current\u user.comments.build(params[:comment],post\u id:params[:id])
假设
params[:id]
包含post id(我猜您在这里使用的是这部分代码
/posts/[:id]/comments/new
)哦,我看到了那一集,但它似乎与这种情况无关,因为它不涉及其他型号。我可能需要更多地了解我需要在控制器中放置的内容,而不是在模型中。您可以始终向控制器添加更多属性,如
current_user.comments.build(params[:comment],post_id:params[:id])
post.comments.build(params[:comment],post_id:params[:id)
根据您的路线的外观,我在上面发布了我的路线,需要在那里更改什么,因为这种方式效果不太好。不,它为posts路线添加了功能,所以您的常规post路线将是相同的,您只需获得额外的/post/:id/comments/:comment\u id之类的内容。是的,它现在正在尝试查找/comme在发布回复后发送nts路由。
resources :post do 
  resources :comments 
end
resources :user do
  resources :comments
end