我在视图(.html.erb)中有以下内容:
<% @posts = GetAllPostsFunctions %> (removed for berivity) <% @posts.each do |post| %> <%= post.title %> <%= render :partial => "posts/post_show" %> <% end %>
posts_show部分具有以下内容:
.... <td><%=h @post.title %> </td>
但是我收到以下错误
You have a nil object when you didn't expect it! The error occurred while evaluating nil.title
有任何想法吗?
解决方法
由于每个循环中的post变量是一个locale变量,因此必须使其可用于partial:
<%= render :partial => "posts/post_show",:locals => {:post => post} %>
然后,您可以通过本地变量帖子访问标题:
<td><%=h post.title %> </td>
您还可以通过将帖子呈现为集合来简化整个过程.有关更多信息,请查看Rails文档:
http://api.rubyonrails.org/classes/ActionController/Base.html#M000658