0

我的帖子和评论之间的关系在 Rails 控制台和 Web 服务器中显示不同!怎么可能?我很困惑,因为部分渲染使用了错误的链接,我认为还有其他问题,但部分根本不应该渲染,因为集合应该是空的!我什至使用 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:

评论/_comment.haml:似乎不相关......

Rails 4.0.0,红宝石 2.0.0p247 (2013-06-27) [i386-mingw32]

4

1 回答 1

2

也许在这个页面的某个地方有一个新评论的表格,你在控制器中建立了新的评论:

@new_comment = @post.comments.build

这就是 @post.comments.count 为 1 的原因。您可以重写代码:

= @post.comments.reject{ |t| t.new_record? }.count

UPD。

有一种更好的方法可以做到这一点:您可以在Comment模型中添加范围,而不是添加拒绝方法:

scope :saved, where('id is not ?', nil)

然后在视图中:

@post.comments.saved.count
于 2013-10-07T06:24:01.580 回答