Подтвердить что ты не робот

Fields_for form builder object is nil

Любой способ доступа к вложенному form_bulder.object?

## controller
@project = Project.new
@project.tasks.build

form_for(@project) do |f|
  f.object.nil? ## returns false

  fields_for :tasks do |builder|
    builder.object.nil? ## returns true
  end
end
4b9b3361

Ответ 1

Для того, чтобы объект был передан, вы должны иметь accepts_nested_attributes_for в модели Project.

class Project < ActiveRecord::Base
  has_many :tasks
  accepts_nested_attributes_for :tasks ## this is required
end

Ответ 2

fields_for требует, чтобы существовал метод tasks_attributes=. accepts_nested_attributes_for :tasks создает этот метод для вас, но вы также можете просто определить его самостоятельно:

def tasks_attributes=(params)
  # ... manually apply attributes in params to tasks
end

Если этот метод не существует, builder.object заканчивается ноль.