2011-09-07 24 views
0

我嘗試瞭解關聯的行爲,但我做錯了什麼。Rails 3 - 關聯 - 它是如何工作的?

我有這兩種模式:

class Album < ActiveRecord::Base 
    has_many :photos 
end 

class Photo < ActiveRecord::Base 
    belongs_to :album 
end 

這意味着一張專輯可以有很多照片和每張照片都屬於一個專輯。現在

,如果我在視圖中有這樣的代碼(假設我已經在控制器中,這是專輯的ID號設置@album = 106):

@album.photos.each_with_index do |pic, index| 
    ... 
end 

我得到了錯誤:ActionView::Template::Error (undefined method 'photos' for 106:Fixnum):

爲什麼我會收到此錯誤訊息?我想我必須設置@album專輯的變量ID,然後循環將搜索表Photos中的照片album_id(album_id = 106)。

我在做什麼仍然錯?

+0

使用部分呈現每張照片都是首選,因爲這會將視圖的「構建塊」分開。渲染@ album.photos會爲相冊中的每張照片渲染一次'photos/_photo.html.erb'視圖。 –

回答

4

你必須得到模型實例獲取的關聯,就像這樣:

@album = Album.find(106) 

要將照片通過創建日期進行排序,像這樣做:

@album.photos.order('created_at DESC').each_with_index do |pic, index| 
    ... 
end 
+0

是的,沒錯,謝謝。我想問你一個問題 - 現在它工作,我終於從表'照片'獲取數據 - 可以設置'each'循環,從表中選擇數據的方式是什麼?例如,最低ID的隱含方式,但我需要最新的時間......這可能是這種說法嗎? – user1946705

+0

@ user705586完成後,請參閱更新後的答案。 –

+0

我越來越喜歡RoR!謝謝你Benoit。 – user1946705