RAILS:belongs_to的Nil类

时间:2015-12-15 22:08:29

标签: ruby-on-rails associations nested-forms nested-attributes belongs-to

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

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)模型中的父项。

那么,实现目标的最佳方式是什么?从这个问题提供的例子我做复杂的形式?

1 个答案:

答案 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