fields_for form builder object is nil
Any way to access a nested form_bulder.object?
## controller
@project = Proj开发者_StackOverflow社区ect.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
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
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.
精彩评论