构建与新问题

时间:2009-05-04 20:40:25

标签: ruby-on-rails

有没有人遇到过这个问题?

我有一组注释,我在视图中正常循环:

<% for comment in @post.comments %>
  <%= comment.body %>
<% end %>

但我也有一个表单来添加注释,但似乎如果我在控制器中使用@ post.comments.build而不是Comment.new,那么它在循环中创建了一个'comment'的空白实例

我更愿意使用.build而不是.new 有没有遇到过这个?有黑客吗?

由于

2 个答案:

答案 0 :(得分:1)

有趣的是你提到,我几天前遇到过这个。

我最终使用Model.new,但您也可以在致电build后尝试重新加载关联。

@post.comments(true)会重新加载它。 (为了便于阅读,您也可以写@post.comments(:force_reload)。)

重新加载的替代方法可能是调用关联的all命名范围,因此@post.comments.all

我认为两者都会发出新的查询,但也许他们会点击查询缓存。

答案 1 :(得分:0)

@comments = @post.comments
@comment  = @post.comments.build

我认为这样做。