2013-03-06 34 views
0

我在做我的模特一個has_and_belongs_to_many協會:NameError(未初始化不斷OrdersController :: AdressesPacks)HABTM關係

pack.rb

has_and_belongs_to_many :adresses 

adress.rb

has_and_belongs_to_many :packs 

在我的控制器我把這個做成了habtm:

@adress = AdressesPacks.create(:adress_id => params[:order],:pack_id => params[:order]) 

但是當我執行我得到這個錯誤

NameError (uninitialized constant OrdersController::AdressesPacks): 

回答

1

通常,在HABTM關係,沒有必要與包含聯接數據表進行交互。要將現有包添加到現有地址:

@adress = Adress.find(params[:order]) 
@adress.packs << Pack.find(params[:order]) 

如果您並不需要ADRESS例如,可以簡化上述轉化爲一個單行:

Adress.find(params[:order]).packs << Pack.find(params[:order]) 
+0

有一個mystype,但對我來說這是正確的答案;) Adress.find(PARAMS [:爲了])包<< Pack.find(PARAMS [:爲了]) – Mauro 2015-04-24 18:19:11

+0

更正支架。謝謝! – 2015-05-01 01:18:54

0

如果使用HABTM你有沒有加入模型。換句話說,沒有AdressesPacks-模型,至少只要你沒有自己創建它。

相反,你做這樣的東西創建關係:

@adress.packs << @pack 
0

對我來說,uninitialized constant誤差因爲我的HABTM關係中的一個模型在初始化時給出了運行時錯誤。我修復了運行時錯誤(顯然,attr_accessible在Rails 4中並不適用),它也解決了uninitialized constant錯誤。

相關問題