2012-06-28 44 views
1

我有2個模型(model1model2),它們具有多對多的關係。表格已經存在,只包含每個模型的主鍵。 has_many through關係在其各自的模型中建立。然而,當我嘗試在POST下面,我得到的經典Ruby on Rails:嘗試添加到集合時出現多對多錯誤

NoMethodError: You have a nil object when you didn't expect it!  
You might have expected an instance of Array. The error occurred while 
evaluating nil.[]": 

model1 = Model1.find(params[:id]) 
model2 = Model2.find(params[:model2_id]) 
model1.model2s << model2 

model1不爲零。 model1.model2s不是零。 model2不是零。這個錯誤來自哪裏?

+0

它說'零。[]'。括號引用索引操作,如'params [:id]'。由於某種原因,「params」無效?你是否正確閱讀了你的錯誤信息。是否說錯誤是在哪一行? – Casper

+0

'params'不是零。根據消息,錯誤發生在'model.model2s << model2'上。 – CitizenX

回答

1

如果你有一個連接表只有具有從每個模型的主鍵,那麼你想has_and_belongs_to_manyhas_many :through

+0

謝謝@smathy,這個伎倆!對於那些後來出現的情況,在這種情況下,關係表被設置爲model1_model2以外的內容。這可以使用':join_table =>'選項來設置。 – CitizenX

+0

不客氣:) – smathy

相關問題