问题
Any way to access a nested 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
回答1:
You must have accepts_nested_attributes_for in the Project model in order for the object to be passed.
class Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks ## this is required
end
回答2:
fields_for
requires that the method tasks_attributes=
exists. accepts_nested_attributes_for :tasks
creates this method for you, but you can also just define it yourself:
def tasks_attributes=(params)
# ... manually apply attributes in params to tasks
end
When this method does not exist, the builder.object
ends up being nil.
来源:https://stackoverflow.com/questions/2409638/fields-for-form-builder-object-is-nil