我有两个模型帖子和类别。我试图在我的索引和帖子显示视图中显示每个帖子的类别名称。我正在使用表连接。但问题是,虽然在我的显示视图中类别显示正确,但它在索引视图中给出了 NoMethodError: undefined method `name' for nil:NilClass 。我不明白为什么它显示在我的显示视图中而不是显示在索引视图中。
索引.html.erb
<% @posts.each do |post| %>
<h2><%= link_to post.title, post %></h2>
<p>বিভাগঃ <%= post.category.name %></p>
<p><%= post.body %></p>
<%= link_to 'দেখুন', post, class: "button tiny" %>
<%= link_to 'সম্পাদনা', edit_post_path(post), class: "button tiny" %>
<% end %>
显示.html.erb
<h2><%= link_to @post.title, @post %></h2>
<h5>বিভাগঃ <%= @post.category.name %></h5>
<p><%= @post.body %></p>
post.rb
class Post < ActiveRecord::Base
validates_presence_of :title, :body, :category
has_many :comments
belongs_to :category
end
类别.rb
class Category < ActiveRecord::Base
has_many :posts
end
Your @posts
实例变量包含以下实例Post
无论出于何种原因,与父母无关Category
。您可以避免NilClass
通过检查是否每个错误Post
有一个关联的Category
在打印类别名称之前:
<%= post.category.name if post.category %>
或者,因为存在一个Post
与某个不相关的Category
可能是不可取的,您可能希望将整个块包装在一个检查条件的条件中Category
:
<% @posts.each do |post| %>
<% if post.category %> # Check for parent category
# Remaining code
<% end %>
<% end %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)