ネストされた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
ネストされた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
オブジェクトを渡すには、プロジェクトモデルにaccepts_nested_attributes_forが必要です。
class Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks ## this is required
end
fields_for
メソッドtasks_attributes=
が存在する必要があります。accepts_nested_attributes_for :tasks
このメソッドを作成しますが、自分で定義することもできます。
def tasks_attributes=(params)
# ... manually apply attributes in params to tasks
end
このメソッドが存在しない場合、最終的builder.object
にはnilになります。