2011-06-12 49 views
0

我有2個車型,註冊軌道3與2個表之間的連接

class Car < ActiveRecord::Base 
    belongs_to :Registration 
end 

class Registration < ActiveRecord::Base 
    has_many :cars, :dependent => :destroy 
    accepts_nested_attributes_for :cars, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true 
end 

在CarsController:

def index 
    @cars = Car.all 
    @cars2 = Car.all(:joins => :Registration) 
end 

鑑於:

<% @cars.each do |car| %> 
    <tr> 
    <td><%= car.twitter %></td> 
    <td><%= car.facebook %></td> 
    <td> 
    <% @cars2.Registration.each do |h| %> #here is my problem 
     <%= h.email %> 
    <% end %> 
    </td> 
    </tr> 
<% end %> 

這是我的車的說法。我正在嘗試打印每個車主的電子郵件。電子郵件在表註冊(模型註冊)。我不知道如何查詢數據庫,我想從表註冊的電子郵件,當列registration_id在表汽車 == id表的列註冊...

所以我想問你,如果你有一個提示,該怎麼辦?

回答

1

你有你的大寫字母的協會。它應該是小像這樣

class Car < ActiveRecord::Base 
    belongs_to :registration 
end 

而且你不必分配2個變量在控制器

def index 
    @cars = Car.includes(:registration) 
end 

並在視圖

<% @cars.each do |car| %> 
    <tr> 
    <td><%= car.twitter %></td> 
    <td><%= car.facebook %></td> 
    <td> 
     <%= car.registration.email %> #here is my problem 
    </td> 
    </tr> 
<% end %> 
+0

該死的,這麼愚蠢的錯誤.. 。 – user1946705 2011-06-12 13:18:40

1

使用這個代替,以獲取電子郵件:

<%= car.registration.email %> 

如果你想預先加載,然後使用您的控制器以下行來代替:

@cars = Car.includes(:registration) 

不需要@cars2

+0

<%= car.registration.email %>我嘗試使用,但我得到一個錯誤:「未定義的方法'註冊'...」我不知道,爲什麼我得到這個錯誤,協會看起來是正確的(我認爲) – user1946705 2011-06-12 11:49:11