2011-11-21 67 views
0

我有幾個基本的Rails問題,我很難找到相關的當前(Rails 3+)信息。這是第一個:如何在Rails 3.1中使用belongs_to關係的屬性?

如何訪問父對象的屬性以在視圖中顯示它們?我有以下型號:

class Site < ActiveRecord::Base 
    has_many :devices 

class Device < ActiveRecord::Base 
    belongs_to :site 

我使用的是常規路線寧靜(做嵌套的資源來發揮作用嗎?),並在設備控制器標準的查找方法。在設備的視圖中,我想顯示擁有該設備的網站的名稱,但是我嘗試的所有內容都會給我帶來錯誤。我如何訪問和顯示給定設備的Site.name值?

在此先感謝您的幫助!

回答

1

如果不知道自己想要什麼,很難知道發生了什麼問題。將下面的工作示例與您的技術進行比較。但是,首先檢查您的設備實際上有一個網站,在這裏探討:Rails belongs_to association, can't access owner's attributes when part of a collection?

在Rails控制檯試試這個:

site = Site.create(:name => "Boston") 
device = Device.create(:name => "hackatron") 
site.devices << device 
device.site.name #=> "Boston" 

你可以看到我滿負荷的情況this gist

如果沒有按」幫助查明你的錯誤在哪裏,請分享一些代碼和你看到的錯誤。

+0

此控制檯代碼完美工作。我有幾個網站和設備在數據庫中,正確關聯。但是當我嘗試在視圖中執行此操作時:'<%= device.site.name%>'我得到nil:NilClass'的未定義方法名'的錯誤。謝謝! – dburges

+0

其實哇,我只是按照你發佈的鏈接,它完全釘住了問題。我的每個設備都有一個site_id,但它看起來像其中一個是無效的。 '除非'代碼很好地避免了錯誤。謝謝! – dburges

+0

我很高興你的工作。 「除非沒有?」是一個好的開始,但最好不要有零價值。查看空對象模式和Avdi Grimm的演講「自信代碼」。 – slothbear

相關問題