0

我在我的模型中创建了一个 has_and_belongs_to_many 关联:

包.rb

  has_and_belongs_to_many :adresses

地址.rb

  has_and_belongs_to_many :packs

在我的控制器中,我将其用于创建 habtm :

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

但是当我执行我得到这个错误

NameError (uninitialized constant OrdersController::AdressesPacks):
4

3 回答 3

1

通常在 HABTM 关系中,不需要与包含连接数据的表进行交互。要将现有包添加到现有地址:

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

如果您不需要 Adress 实例,则可以将上述内容简化为一行:

Adress.find(params[:order]).packs << Pack.find(params[:order])
于 2013-03-06T18:54:03.877 回答
0

如果您使用 HABTM,则您没有连接模型。换句话说,没有AdressesPacks-model,至少只要你没有自己创建它。

相反,您可以通过执行以下操作来创建关系:

@adress.packs << @pack
于 2013-03-06T18:46:46.570 回答
0

对我来说,uninitialized constant发生错误是因为我的 HABTM 关系中的一个模型在初始化时给出了运行时错误。我修复了运行时错误(显然attr_accessible在 Rails 4 中不能开箱即用),它也解决了uninitialized constant错误。

于 2013-12-31T12:09:31.240 回答