2015-09-09 69 views
2

我有兩個模型問題和拆分。如何從當前模型所屬的模型訪問數據?

問題有許多拆分,拆分屬於一個問題。下面是兩種模式的代碼:

class Issue < ActiveRecord::Base 

    belongs_to :publication 
    has_many :splits 
    has_many :issue_split_geographies 
    belongs_to :medium 

    validates :name, :start_date, :status, presence: true 
end 

class Split < ActiveRecord::Base 
    belongs_to :issue 
    has_and_belongs_to_many :geographies 
    has_and_belongs_to_many :media 
end 

我知道如何從一個問題做@ issue.split.name訪問我的問題的看法拆分信息,如果我想在我的問題的看法得到一個分裂的名字。

我在解決如何去其他方面有問題。我如何在拆分視圖中顯示問題信息?

@ split.issue.target給我未定義的方法'問題「的零:NilClass

split.issue.target給我'分裂未定義的局部變量或方法」爲

issue.target給我「未定義的局部變量或方法」問題「爲」

我試圖在拆分索引頁面上顯示問題的目標值,以便我可以確定要添加多少個拆分以達到我的目標。

這似乎是我失去了一些明顯的東西。但是,我有點小菜。

感謝

+0

你在哪裏定義'@ split'?請發佈相關代碼。 – Pavan

+0

在你的例子中,@ @ split是否有'issue_id'? – trh

+0

我在索引頁上顯示了這一點,所以尚未分配issue_id。我實際上只是試圖顯示問題目標值的值,以便最終用戶可以決定將哪些拆分分配給問題以達到該值。把它想象成向汽車油箱添加汽油。我試圖展示儲氣罐的容量,以便用戶可以確定將哪些氣罐添加到儲罐中,以便儲罐充滿。 –

回答

1
@split.issue.target 

是正確的方式去爲你的分裂belongs_to問題。所以,@split.issue沒問題。只要確保在您的相應控制器的操作中定義了@split,並且您的splits表中有issue_id即可。

但是,正如你提到:@issue.split.name,這不應該作爲你問題has_many分裂正確。它應該是這樣的:@issue.splits.first.name

你的錯誤消息:

@split.issue.target gives me undefined method `issue' for nil:NilClass 

意味着@splitnil。所以,在你的相應控制器的動作/方法中定義@split。像這樣:

@split = Split.first 

然後,它應該工作。

+0

我已經爲我的索引方法(這是我認爲你說的我需要做的)在我的分割控制器中添加了'@split = nil',並且我有'@ split.issue.target'我的索引視圖。但是,我仍然得到'未定義的方法問題'爲零:NilClass' –

+0

不,我沒有說你必須這樣做:'@split = nil'。對困惑感到抱歉。不可能是這樣。你必須設置一個'@ split',像這樣:'@split = Split.first' –

+1

明白了。完美的作品。謝謝! –

相關問題