Построить против новой проблемы - PullRequest
0 голосов
/ 05 мая 2009

Кто-нибудь сталкивался с этой проблемой?

У меня есть коллекция комментариев, которые я перебираю в обычном представлении:

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

Но у меня также есть форма для добавления комментария, но кажется, что если я использую @ post.comments.build вместо Comment.new в контроллере, он создаст пустой экземпляр «комментария» в цикле .

Я бы предпочел использовать .build not .new Кто-нибудь сталкивался с этим? Есть ли взлом?

Спасибо

Ответы [ 2 ]

1 голос
/ 05 мая 2009

Забавно, что вы упомянули, я столкнулся с этим несколько дней назад.

Я закончил с Model.new, но вы также можете попробовать перезагрузить ассоциацию после того, как позвоните build.

@post.comments(true) перезагрузит его. (Вы также можете написать @post.comments(:force_reload) для удобства чтения.)

Альтернативой перезагрузке может быть вызов именованной области действия all для ассоциации, поэтому @post.comments.all.

Я думаю, что оба в любом случае выдадут новый запрос, но, возможно, они попадут в кеш запросов.

0 голосов
/ 05 мая 2009
@comments = @post.comments
@comment  = @post.comments.build

Думаю, так и будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...