Частичный код отображается с помощью:
<%= render: @feed_items %>
Где @feed_items
содержит микросообщения, что дает ему переменную micropost
для каждого члена коллекции в частичном.
_micropost.html.erb
<li>
<div>
<%= form_for([micropost, micropost.comments.build], remote: true, :html => {:class => 'comment_form'}) do |f| %>
<%= f.text_area :content %>
<%= f.submit "post comment" %>
<% end %>
</div>
<div class="comments_container<%= micropost.id %>">
<% if micropost.comments.present? %>
<% micropost.comments.each do |comment| %>
<div class="comment">
<%= comment.content %>
<%= link_to "Comments posts", micropost_comment_path(micropost, comment), method: :get %>
<% end %>
<% end %>
</div>
</li>
Проблема заключается в том, что при вставке формы <% micropost.comments.each do |comment| %>
выполняется дважды.Когда я удаляю форму, мой код работает отлично.Я могу проверить, используя <%= comment.inspect %>
внутри блока, то, что выплевано, это
<div>
#<Comment id: 1, content: "hello", micropost_id: 1809, gallery_id: nil, picture_id: nil, created_at: "2018-05-29 06:53:21", updated_at: "2018-05-29 06:53:21">
</div>
<div>
#<Comment id: nil, content: nil, micropost_id: 1809, gallery_id: nil, picture_id: nil, created_at: nil, updated_at: nil>
</div>
Я вижу, что есть значение для второго объекта micropost_id: 1809
, но все остальное - ноль.
РЕДАКТИРОВАТЬ
Мой вопрос заключается в том, что у меня есть только один комментарий для этого микросообщения в базе данных, который является первым комментарием в проверяемом объекте, второй просто создается случайным образом, и яне уверен почему?
Спасибо.