# Binding an array to multiple text fields in a form

**URL:** <https://www.ruby-forum.com/t/binding-an-array-to-multiple-text-fields-in-a-form/108584>\
**Category:** Rails\
**Created:** [July 5, 2007, 2:12am UTC](https://www.ruby-forum.com/t/binding-an-array-to-multiple-text-fields-in-a-form/108584 "2007-07-05T02:12:15Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![rlorimor](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/96bed5/32.png) [@rlorimor](https://www.ruby-forum.com/u/rlorimor)\
**Post date:** [July 5, 2007, 2:12am UTC](https://www.ruby-forum.com/t/binding-an-array-to-multiple-text-fields-in-a-form/108584/1 "2007-07-05T02:12:15Z")

</div>

I have a model that has the following classes: ShoppingList, Item and  
Product.

– _Product_ is just a list of product names: Apple, Orange, Banana,  
Pear,  
Grape. The table has two columns: ID and NAME.

– A _ShoppingList_ has a name (string) and many _Item_ objects.

– Each _Item_ has a _quantity_ (integer) and to-one relationship to  
a  
_Product_.

My ShoppingList’s edit view has a form that contains a textfield for  
the name of  
a shopping list and a table of items and their quantities:

Name: MyShoppingList

Qty. Item  
3 Apples  
0 Oranges  
1 Pear

The Qty. is an editable text field. The Item is a non-editable text  
label.

The model object for this view is, of course, a ShoppingList.

I am trying to bind each text field to the quantity attribute of each  
item in the shopping list. I tried something like this but it doesn’t  
work because Rails wants an instance variable to bind to. How do I  
properly bind my array?

\<% @shopping\_list.items.each do |item| %\>

\<%= text\_field("shopping\_list.items[" + item.id.to\_s + "].quantity", item.quantity, :size =\> 3) %\> \<%= (Product.find item.product\_name\_id).name%\> \<% end %\>

---

<div class="post-metadata">

**Author:** ![rlorimor](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/96bed5/32.png) [@rlorimor](https://www.ruby-forum.com/u/rlorimor)\
**Post date:** [July 5, 2007, 3:20am UTC](https://www.ruby-forum.com/t/binding-an-array-to-multiple-text-fields-in-a-form/108584/2 "2007-07-05T03:20:17Z")

</div>

Let me try to simplify this problem:

To create the html table, I have this code:

\<% @shopping\_list.items.each do |item| %\>

\<%= text\_field("item.quantity", item.quantity, :size =\> 3) %\> \<%= (Product.find item.product\_name\_id).name%\> \<% end %\>

But it generates this error:

`@item.quantity’ is not allowed as an instance variable name

This tells me that you can only bind instance variables and not  
relationships off them. Is this true? Where can I find a detailed  
explanation on how binding forms to variables work?

---

<div class="post-metadata">

**Author:** ![rlorimor](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/96bed5/32.png) [@rlorimor](https://www.ruby-forum.com/u/rlorimor)\
**Post date:** [July 5, 2007, 3:37pm UTC](https://www.ruby-forum.com/t/binding-an-array-to-multiple-text-fields-in-a-form/108584/3 "2007-07-05T15:37:20Z")

</div>

Never mind. I figured it out. The solution is to use the fields\_for  
tag. The problem was editing multiple models in one large form.
