我在rails控制台和网络服务器中的帖子和评论之间的关系有所不同!怎么会这样?我很困惑,因为部分渲染错误的链接,我认为其他错误,但部分不应该渲染,因为集合应该是空的!我甚至使用if / else检查大小,它仍然显示空关系的部分!
Rails控制台:
irb(main):033:0> p=Post.find(6)
=> #<Post id: 6, title: "Yahoo", comment: "The home page.", link: nil, user_id: nil, created_at: "2013-10-06 21:53:24", updated_at: "2013-10-07 00:43:25">
irb(main):034:0> p.comments.size
=> 0
帖/ show.haml:
%h2 Comments
Post ID:
=@post.id
, Comment Size:
=@post.comments.size
- if @post.comments.empty?
No comments.
- else
= render @post.comments
浏览器:http://127.0.0.1:3000/posts/6
Comments
Post ID: 6 , Comment Size: 1
Commenter:
comments / _comment.haml:似乎没有相关性......
Rails 4.0.0,ruby 2.0.0p247(2013-06-27)[i386-mingw32]
答案 0 :(得分:2)
也许在这个页面的某个地方有一个新评论的表单,你在控制器中建立新的评论:
@new_comment = @post.comments.build
这就是@ post.comments.count为1的原因。您可以重写代码:
= @post.comments.reject{ |t| t.new_record? }.count
UPD。
有一种更好的方法可以做到这一点:您可以在评论模型中添加拒绝方法,而不是添加拒绝方法:
scope :saved, where('id is not ?', nil)
然后在视图中:
@post.comments.saved.count