我有三个模型关联:用户,发布,评论。注释是Post的嵌套资源。
的routes.rb
resources :posts do
resources :comments
end
用户模型:
has_many :comments
发布模型:
has_many :comments
评论模型:
belonsg_to :user
belonsg_to :post
目标是当用户发表新评论时,它会创建与该用户的关联。所以你可以看到它像用户知道他所做的所有评论。
comments_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 %>
这给了我一个错误没有方法评论。我该怎么做才能避免这种情况?
答案 0 :(得分:1)
很可能你在new.html.erb中缺少“S”字母。应该是评论:
<% form_for [@post, @post.comments.build] do |f| %>
.....
<% end %>
如果有更多的逻辑背后你没有发布让我们知道。你的创建动作看起来很好。尝试查看控制台student_id属性,如果它填充了ID而不是你的.cheers。
答案 1 :(得分:0)
使用
@post.comments.build
而不是
@post.comment.build (x)
这应该可行,如果可能的话,将这行代码从视图移动到控制器
了解更多信息 http://guides.rubyonrails.org/association_basics.html#detailed-association-reference
答案 2 :(得分:0)
在 new.html.erb 文件中,您使用“s”作为构建方法。
应该是,
<% form_for [@post, @post.comments.build] do |f| %>
.....
<% end %>