Getting the object in fields_for

I’m using the fields_for helper with accepts_nested_attributes_for
The System model has_many children.

If I do this in my haml template:

-form_for @system do |s|
=s.text_field :name

-s.fields_for :children do |child_fields|
        =child_fields.text_field :name

all is fine. The fields_for iterates over all children and puts the
correct data in the fields.

But…what I want to do is access the child object in that loop.
With normal fields_for I could do:
=child_fields.object.foo()
within the loop, but that no longer works since child_fields.object is
nil.
How do I access the child object?
Do I just have to revert to creating a separate iteration over the
child objects?

Hi stuart.coyle

Assuming you have in model accepts_nested_attributes_for :children

In that case you can still access child record with

child_fields.object

Sijo

Ah! You’re right.

I was passing the child_fields object to a partial and that’s where it
was not working.
I’ve pulled the code out of the partial and it works fine.

Cheers.

Hi stuart.coyle

Ah! You’re right.

I was passing the child_fields object to a partial and that’s where it
was not working.
I’ve pulled the code out of the partial and it works fine.

Cheers.

Even in that case it will work.Do like

<%= render :partial => ‘partial_name’,:locals => {:f => child_fields}
And now in partial f.object

Sijo K George

I think I’m making life hard for myself.

Just browsed through the form_helper.rb code and found what was
happening.

 def object
    @object || @template_object.instance_variable_get("@#

{@object_name}")
rescue NameError
# As @object_name may contain the nested syntax (item
[subobject]) we
# need to fallback to nil.
nil
end

So when it’s a nested object I get nil.

InstanceTag goes through a bunch of acrobatics in initialize
to get the actual object values.

Still doesn’t give me any easy way to access the object of the
FormBuilder.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs