我一直得到nil的错误未定义方法`comments':第14行的NilClass。这是有问题的代码。
<li>
<span class="content"><%= micropost.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
<% if current_user?(micropost.user) %>
<%= link_to "delete", micropost, method: :delete,
confirm: "You sure?",
title: micropost.content %>
<% end %>
<h2>Comments</h2>
<% @micropost.comments.each do |comment| %>
<p>
<b>Commenter:</b>
<%= comment.commenter %>
</p>
<p>
<b>Comment:</b>
<%= comment.body %>
</p>
<% end %>
<h3>Add a comment:</h3>
<%= form_for([micropost, micropost.comments.build]) do |f| %>
<div class="field">
<%= f.label :commenter %><br />
<%= f.text_field :commenter %>
</div>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
</li>
就好像你不能通过注释数组调用循环一样,因为它是空的。我尝试添加&lt;%if @ micropost.comments.any? $&GT;在第13行,这样如果没有评论它就不会尝试循环但是我在第13行得到完全相同的错误。我的语法错了吗?
答案 0 :(得分:4)
将@micropost
替换为micropost
答案 1 :(得分:0)
是的,每个人都遍历一个空数组,它只是不会真正“迭代”,因为它是空的。