0

我正在使用充当树宝石来创建Category模型:

  1 class Category < ActiveRecord::Base
  2   include ActsAsTree
  3   attr_accessible :name
  4 
  5   acts_as_tree order: "name"
  6 end

在我的一种观点中,我试图显示该类别的父级名称:

 12 <% @categories.each do |category| %>
 13   <tr>
 14     <td><%= category.name %></td>
 15     <td><%= category.parent.name %></td>
 16     <td><%= link_to 'Show', category %></td>
 17     <td><%= link_to 'Edit', edit_category_path(category) %></td>
 18     <td><%= link_to 'Destroy', category, method: :delete, data: { confirm: '
 19   </tr>
 20 <% end %>

但是,访问视图时出现错误:

undefined method `name' for nil:NilClass

但是,我可以category.parent_id成功显示。

有任何想法吗?

4

1 回答 1

1

您的数据库中有脏数据。nil当您调用category.parent时,当您调用name方法时,category.parent您实际上是在调用name方法nil,因此它undefined method为 nil:NilClass提供了一个错误名称

当您有如下数据时会发生这种情况

id  name      parent_id
2   child1     1     
3   child2     1     

现在我的表中有以上两个数据,在这里您可以看到parent两个记录都是1,因此必须有一个带有 id 的记录1

<%
   child = Model.find 2
   child.parent_id #This gives you `1`
   child.parent #This gives you `nil`
   child.parent.name #This gives you error undefined method `name' for nil:NilClass
 %>
于 2012-10-08T04:08:52.663 回答