# Am I wrong or is fields\_for not working right in Rails 2.2.2

**URL:** <https://www.ruby-forum.com/t/am-i-wrong-or-is-fields-for-not-working-right-in-rails-2-2-2/154687>\
**Category:** Rails\
**Created:** [December 2, 2008, 11:29pm UTC](https://www.ruby-forum.com/t/am-i-wrong-or-is-fields-for-not-working-right-in-rails-2-2-2/154687 "2008-12-02T23:29:07Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![joshua-asem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e5b9ba/32.png) [@joshua-asem](https://www.ruby-forum.com/u/joshua-asem)\
**Post date:** [December 2, 2008, 11:29pm UTC](https://www.ruby-forum.com/t/am-i-wrong-or-is-fields-for-not-working-right-in-rails-2-2-2/154687/1 "2008-12-02T23:29:07Z")

</div>

I may be totally wrong about what the fields\_for method is supposed to  
do, but for some reason I thought using it scoped an object around an  
association.

For example, I have a User class and when you’re creating a new user I  
want to use fields\_for to add a BillingAddress to the user like so:

\<%- fields\_for :billing\_address do |billing\_address\_form| -%\>  
\<%= render :partial =\> ‘billing\_addresses/form’, :locals =\> { :f =\>  
billing\_address\_form } %\>  
\<%- end -%\>

This however, is not scoping the user object around the billing address  
form fields because when I view source, I see this:

Address one

Address two

I’m using Rails 2.2.2 and maybe this never worked the way I’m thinking  
it should, or I could be doing something wrong…

Any suggestions anyone?

Thanks,  
Josh

---

<div class="post-metadata">

**Author:** ![joshua-asem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e5b9ba/32.png) [@joshua-asem](https://www.ruby-forum.com/u/joshua-asem)\
**Post date:** [December 3, 2008, 10:45pm UTC](https://www.ruby-forum.com/t/am-i-wrong-or-is-fields-for-not-working-right-in-rails-2-2-2/154687/2 "2008-12-03T22:45:52Z")

</div>

On Dec 2, 10:29 pm, Joshua A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> \<%- end -%\>  
> Address two

Assuming that partial is along the lines of  
\<%= f.label :address\_one %\>  
\<%= f.text\_field :address\_one %\>  
…

That’s what I would expect. Are you expecting it to magically guess  
something ?(if so, what?)

Fred

---

<div class="post-metadata">

**Author:** ![joshua-asem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e5b9ba/32.png) [@joshua-asem](https://www.ruby-forum.com/u/joshua-asem)\
**Post date:** [December 3, 2008, 10:50pm UTC](https://www.ruby-forum.com/t/am-i-wrong-or-is-fields-for-not-working-right-in-rails-2-2-2/154687/3 "2008-12-03T22:50:11Z")

</div>

I guess I’m expecting it to know from

\<%- form\_for(@user) do |f| -%\>

\<%- fields\_for :billing\_address do |billing\_address\_form| -%\>  
\<%= render :partial =\> ‘billing\_addresses/form’, :locals =\> { :f =\>  
billing\_address\_form } %\>  
\<%- end -%\>

\<%- end -%\>

to build inputs more like user[billing\_address][address\_two]

Is that not what fields\_for is used for?

– Josh

Frederick C. wrote:

> On Dec 2, 10:29ï¿½pm, Joshua A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> wrote:
> 
> > \<%- end -%\>  
> > ï¿½ Address two  
> >   
> > ï¿½
> 
> Assuming that partial is along the lines of  
> \<%= f.label :address\_one %\>  
> \<%= f.text\_field :address\_one %\>  
> …
> 
> That’s what I would expect. Are you expecting it to magically guess  
> something ?(if so, what?)
> 
> Fred

---

<div class="post-metadata">

**Author:** ![joshua-asem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e5b9ba/32.png) [@joshua-asem](https://www.ruby-forum.com/u/joshua-asem)\
**Post date:** [December 3, 2008, 11:04pm UTC](https://www.ruby-forum.com/t/am-i-wrong-or-is-fields-for-not-working-right-in-rails-2-2-2/154687/4 "2008-12-03T23:04:03Z")

</div>

On Dec 3, 9:50 pm, Joshua A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> to build inputs more like user[billing\_address][address\_two]

Just because lexically it’s ‘inside’ the first form isn’t enough (or  
to put things another way, it’s hard for code to know about the code  
that’s calling them). If you want what you describe you need to be  
explicit: use f.fields\_for

Fred

---

<div class="post-metadata">

**Author:** ![joshua-asem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e5b9ba/32.png) [@joshua-asem](https://www.ruby-forum.com/u/joshua-asem)\
**Post date:** [December 3, 2008, 11:05pm UTC](https://www.ruby-forum.com/t/am-i-wrong-or-is-fields-for-not-working-right-in-rails-2-2-2/154687/5 "2008-12-03T23:05:26Z")

</div>

Fred, I think you nailed it! Thanks a lot!

– Josh

Frederick C. wrote:

> On Dec 3, 9:50ï¿½pm, Joshua A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> wrote:
> 
> > to build inputs more like user[billing\_address][address\_two]
> 
> Just because lexically it’s ‘inside’ the first form isn’t enough (or  
> to put things another way, it’s hard for code to know about the code  
> that’s calling them). If you want what you describe you need to be  
> explicit: use f.fields\_for
> 
> Fred
