Ruby on rails 构建vs新问题
有人遇到过这个问题吗 我有一组注释,我在视图中正常循环:Ruby on rails 构建vs新问题,ruby-on-rails,Ruby On Rails,有人遇到过这个问题吗 我有一组注释,我在视图中正常循环: <% for comment in @post.comments %> <%= comment.body %> <% end %> 但是我也有一个表单来添加注释,但是如果我在控制器中使用@post.comments.build而不是comment.new,它似乎会在循环中创建一个空白的“comment”实例 我更喜欢使用。构建而不是。新建 有人遇到过这种情况吗?有黑客吗 谢谢你说的很有趣,我几
<% for comment in @post.comments %>
<%= comment.body %>
<% end %>
但是我也有一个表单来添加注释,但是如果我在控制器中使用@post.comments.build而不是comment.new,它似乎会在循环中创建一个空白的“comment”实例
我更喜欢使用。构建而不是。新建
有人遇到过这种情况吗?有黑客吗
谢谢你说的很有趣,我几天前遇到了这个问题 我最终选择了
Model.new
,但您也可以在调用build
后尝试重新加载关联
@post.comments(true)
将重新加载它。(为了便于阅读,您还可以编写@post.comments(:force_reload)
。)
重新加载的替代方法可能是调用关联的all
命名范围,因此@post.comments.all
我认为两者都会发出一个新的查询,但它们可能会命中查询缓存
@comments = @post.comments
@comment = @post.comments.build
我想这样就可以了。不错,我要试一试。我本以为New和Build非常接近,所以New也会出现,但我猜不会。使用Build,您可以从关联中创建一个新对象,部分原因是它修改了关联。当您直接从Comment类实例化时,它不知道加载了什么关联,也不知道它正在初始化的对象是否与它们有任何可能的关系。