我想制作嵌套表格。我有:
advert.rb
has_many :photos
belongs_to :car
accepts_nested_attributes_for :photos
accepts_nested_attributes_for :car
controller.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
)模型中的父项。
那么,实现目标的最佳方式是什么?从这个问题提供的例子我做复杂的形式?
答案 0 :(得分:1)
使用
@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