38

ネストされた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
4

2 に答える 2

71

オブジェクトを渡すには、プロジェクトモデルにaccepts_nested_attributes_forが必要です。

class Project < ActiveRecord::Base
  has_many :tasks
  accepts_nested_attributes_for :tasks ## this is required
end
于 2010-03-09T16:45:17.360 に答える
17

fields_forメソッドtasks_attributes=が存在する必要があります。accepts_nested_attributes_for :tasksこのメソッドを作成しますが、自分で定義することもできます。

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

このメソッドが存在しない場合、最終的builder.objectにはnilになります。

于 2014-06-25T10:39:10.273 に答える