0

我在以下三个模型之间关联:用户、帖子、评论。评论是 Post 的嵌套资源。

路线.rb

resources :posts do
 resources :comments
end

用户型号:

has_many :comments

岗位型号:

has_many :comments

评论型号:

belonsg_to :user
belonsg_to :post

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

评论控制器.rb

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

新的.html.erb

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

这给了我一个错误,没有方法评论。我应该怎么做才能避免这种情况?

4

3 回答 3

1

您很可能在 new.html.erb 中缺少“S”字母。应该是评论:

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

如果您没有发布更多逻辑,请告诉我们。您的创建操作看起来不错。尝试查看控制台 student_id 属性,如果它填充的 ID 比你好。干杯。

于 2013-06-05T11:50:34.460 回答
0

利用

@post.comments.build

代替

@post.comment.build (x)

这应该可以工作,如果可能的话,将这行代码从视图移动到控制器

更多信息 http://guides.rubyonrails.org/association_basics.html#detailed-association-reference

于 2013-06-05T10:56:21.410 回答
0

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

它应该是,

<% form_for [@post, @post.comments.build]  do |f| %>
.....
<% end %>
于 2013-06-05T10:59:16.330 回答