我有这些方法:
class Item < ApplicationRecord
has_many :fabrics
end
class Fabric < ApplicationRecord
belongs_to :item
has_many :inventories
end
class Inventory < ApplicationRecord
belongs_to :fabric
end
控制器:
class InventoryController < ApplicationController
def index
@inventory = Inventory.all
end
并查看:
<% @inventory.each do |f| %>
<tr>
<td><%= f.fabric.item %></td>
</tr>
<% end %>
我收到此错误:
ActionView::Template::Error (undefined method `item' for nil:NilClass):
有人可以解释我收到此错误的原因吗?是因为范围?我读过Active Record Associations Guide(http://guides.rubyonrails.org/association_basics.html#belongs-to-association-reference)。在'4.1.3.2 includes'下有一个类似于我的模型关联的例子,它说这应该没问题?
答案 0 :(得分:0)
此错误表示某些库存没有相关结构等inventory.fabric == nil
。您需要在视图代码中管理此案例:
<% @inventory.each do |f| %>
<tr>
<td><%= f.fabric ? f.fabric.item : "Without item" %></td>
</tr>
<% end %>