0

私はCategoryモデルを作成するために木の宝石としての行為を使用しています:

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

私のビューの 1 つで、カテゴリの親の名前を表示しようとしています。

 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ため、 nil:NilClass` のエラー名が表示されますcategory.parentnamenilundefined method

これは、次のようなデータがある場合に発生します

id  name      parent_id
2   child1     1     
3   child2     1     

これで、テーブルに 2 つ以上のデータがあります。ここでは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 に答える