Ruby on rails 用于建立关联的嵌套资源和构建方法

Ruby on rails 用于建立关联的嵌套资源和构建方法,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我有三个模型:用户、帖子、评论。注释是带有Post的嵌套资源 routes.rb resources :posts do resources :comments end 用户模型: has_many :comments 后模型: has_many :comments 注释模型: belonsg_to :user belonsg_to :post 目标是当用户做出新评论时,它会创建与该用户的关联。所以你们可以看到它,就像用户知道他所做的所有评论一样 注释\u controller.rb

我有三个模型:用户、帖子、评论。注释是带有Post的嵌套资源

routes.rb

resources :posts do
 resources :comments
end
用户模型:

has_many :comments
后模型:

has_many :comments
注释模型:

belonsg_to :user
belonsg_to :post
目标是当用户做出新评论时,它会创建与该用户的关联。所以你们可以看到它,就像用户知道他所做的所有评论一样

注释\u controller.rb

def create
  @post = Post.find(params[post_id]
  @comment = @post.comments.build[:comment]
  current_user.comments >> @comment
  ....
end
new.html.erb

<% form_for [@post, @post.comment.build]  do |f| %>
.....
<% end %>

.....
这给了我一个没有方法注释的错误。我应该做些什么来避免这种情况?

使用

@post.comments.build
而不是

@post.comment.build (x)
这应该是可行的,如果可能的话,将这行代码从视图移动到控制器

更多信息

new.html.erb文件中,您正在使用“s”作为构建方法

应该是,

<% form_for [@post, @post.comments.build]  do |f| %>
.....
<% end %>

.....

您很可能在new.html.erb中丢失了“S”字母。应提供以下评论:

<% form_for [@post, @post.comments.build]  do |f| %>
  .....
<% end %>

.....

如果你没有发帖背后还有什么逻辑,请告诉我们。您的创建操作看起来很好。尝试查看console student_id属性,如果该属性中填充了id,则可以。干杯。

什么是Prog model?它是
属于
而不是
属于
参考您输入的链接,这可能是您的问题吗?您编写了
而不是
。因此
注释
而不是
注释