由于一些奇怪的原因,我的列表视图中的关联不能始终如一地工作。 在我的模特中,我有:
Class Restaurant < ActiveRecord::Base
has_many :menus
Class Menu < ActiveRecord::Base
Belongs_to :restaurant
在我的控制器中我有:
def list
@menus = Menu.order("menus.id ASC")
end
在我看来,我有:
<% = menus.each do |menu| %>
<h4><%= menu.restaurant.name %></h4>
<% end %>
我得到未定义的方法“名称”。 name是餐厅餐桌中的一栏。
但是,当我使用< %= @menu.restaurant.name % >
时没有问题,它可以在我的展示视图中使用。
我正在使用rails 3.2.9和ruby 1.9.3
答案 0 :(得分:1)
正如Marek Lipka所说,您的菜单与餐厅无关。
因此对menu.restaurant
的引用为零。
如果打算没有餐厅的菜单,您可以在视图中绕过Nil参考:
<%= menu.restaurant.try(:name) %>
答案 1 :(得分:0)
至少有一个@menus
可能没有关联的restaurant
。
尝试在您的控制台Menu.includes(:restaurant).each{|m| puts m.id unless m.restaurant}
中输入内容,以查看导致此问题的menu
条记录。