2013-07-29 63 views
0

出於某種奇怪的原因,我的列表視圖中的關聯不一致。 在我的模型有:使用belongs_to關聯時在列表視圖中未定義的方法

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 %> 

我得到未定義的方法「名」。名稱是餐館表中的一列。

但是,當我使用< %= @menu.restaurant.name % >沒有問題時,它在我的節目視圖中工作。

我使用的鐵軌3.2.9和1.9.3的紅寶石

回答

0

至少你@menus可能沒有與其相關的restaurant之一。

嘗試在您的控制檯Menu.includes(:restaurant).each{|m| puts m.id unless m.restaurant}中輸入以查看menu記錄導致此問題的原因。

+0

這究竟是什麼。非常感謝。 – Ria

1

正如Marek Lipka所說,你有沒有鏈接到餐廳的菜單。

所以參考menu.restaurant是零。

如果打算有沒有餐廳的菜單,您可以在您的視圖繞過無參考:

<%= menu.restaurant.try(:name) %> 

http://apidock.com/rails/Object/try

相關問題