我想制作嵌套表单。我有:
广告.rb
has_many :photos
belongs_to :car
accepts_nested_attributes_for :photos
accepts_nested_attributes_for :car
控制器.rb
def new
@advert = Advert.new
@advert.photos.new # OK
@advert.car.new # ERROR
end
因此,对于@advert.photos.new
,一切都可以(生成advert[photos_attributes][o][image]
的表单),但对于@advert.car.new
,我得到了错误:undefined method 'new' for nil:NilClass
UPD 1:在阅读了大量关于nested_attributes的文章后,我明白了我们不能将accepts_nested_attributes_for
用于儿童中的父母(belongs_to
)模型。
那么,实现我的目标的最佳方式是什么呢?根据我在这个问题中提供的例子制作复杂的表格?
使用
@advert.car = Car.new
相反。这就是您在Rails中构建关联的方式。
更新
至于为父母使用嵌套,你可以这样做我意识到可能有更好的方法来实现这一点
在控制器中,有这样的东西:
def create
@advert = Advert.new(advert_params)
@advert.car = Car.new(car_params)
if @advert.save && @advert.car.save
...
end
end
private
def advert_params
params.require(:advert).permit(...whitelisted stuff...)
end
def car_params
params.require(:car).permit(...whitelisted stuff...)
end