RAILS: Nil class for belongs_to



我想制作嵌套表单。我有:

广告.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

最新更新