# Railscast 75, Observe\_field and Shopping Cart

**URL:** <https://www.ruby-forum.com/t/railscast-75-observe-field-and-shopping-cart/151671>\
**Category:** Rails\
**Created:** [October 24, 2008, 9:32am UTC](https://www.ruby-forum.com/t/railscast-75-observe-field-and-shopping-cart/151671 "2008-10-24T09:32:02Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![vinay](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/6a8cbe/32.png) [@vinay](https://www.ruby-forum.com/u/vinay)\
**Post date:** [October 24, 2008, 9:32am UTC](https://www.ruby-forum.com/t/railscast-75-observe-field-and-shopping-cart/151671/1 "2008-10-24T09:32:02Z")

</div>

Hi all,

I have the shopping cart page where a user can add items dynamically  
through ajax as explained in Railscast episode 75. I am using  
observe\_field to observe the ‘quantity’ and ‘cost’ fields to update  
the total field for each item.  
This does not work however, for records that are added through the  
Ajax. How can i name the fields and observe them as i have explained?  
is observing the best way to go?  
Really appreciate any help.

---

<div class="post-metadata">

**Author:** ![vinay](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/6a8cbe/32.png) [@vinay](https://www.ruby-forum.com/u/vinay)\
**Post date:** [October 25, 2008, 6:27am UTC](https://www.ruby-forum.com/t/railscast-75-observe-field-and-shopping-cart/151671/2 "2008-10-25T06:27:05Z")

</div>

Anyone? Im sure its a common problem. I just dont know how to  
verbalise this better.  
For each record, there is a cost field, a quantity field, and a total  
field. “Cost” and “quantity” are observed and the corresponding  
“Total” field is updated via an Ajax post to a method called  
“Calculate” which multiplies the two and updates a div called  
“Total”(I also need to extract the value of total from this div and  
assign it to the Total attribute somehow). I show one record in the  
form when the form is loaded. For this record, this method works. But  
when i dynamically add more records, their corresponding “Total” divs  
do not get updated. How can I achieve this? I hope i have explained  
the problem better and hoping to get some answers.

---

<div class="post-metadata">

**Author:** ![vinay](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/6a8cbe/32.png) [@vinay](https://www.ruby-forum.com/u/vinay)\
**Post date:** [October 26, 2008, 12:38am UTC](https://www.ruby-forum.com/t/railscast-75-observe-field-and-shopping-cart/151671/3 "2008-10-26T00:38:50Z")

</div>

The cost you should get when you get to the controller… Just send  
the id of the product and find the cost when you get to the  
controller…

About the quantity, not sure about the observer but I just added a  
remote\_form that has the quantity property:

\<% remote\_form\_for :quantity, :url =\> { :controller =\>  
“carts”, :action =\> :add, :id =\> @product.id },  
:complete =\> visual\_effect(:highlight, ‘floating\_cart’) do |f| -%\>  
\<%= f.select :quantity, (1…5) %\>  
\<%= image\_submit\_tag("…/images/add\_to\_cart.png", :class =\>  
“submit\_tag”) %\>  
\<% end %\>

This is for the cart model… adding a product to the cart…  
item.update\_attributes({ :amount =\> item.amount + quantity,  
:price =\> product.price,  
:weight =\> product.weight})  
cart\_items \<\< item

---

<div class="post-metadata">

**Author:** ![vinay](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/6a8cbe/32.png) [@vinay](https://www.ruby-forum.com/u/vinay)\
**Post date:** [October 28, 2008, 6:27am UTC](https://www.ruby-forum.com/t/railscast-75-observe-field-and-shopping-cart/151671/4 "2008-10-28T06:27:44Z")

</div>

Thanks Freddy!  
Although what I need help is with a different issue. Let me try to  
explain better.  
The quantity and cost fields are not the problem. The “Total” field  
is. This field is to get updated with cost\*qty, as and when the user  
changes the qty. This is working successfully for me when i have a  
record of just one product in the cart. But when i add more products  
through an “Add product” ajax link, their respective “Total” fields  
dont work.  
I understand that i have to index every product i add to the cart in  
order for each of them to have an identity. But according to the  
Railscast 75, the accepted parameters cannot be processed in a setter  
method if the index is included in the array of attributes.  
Hope that makes it a bit clearer. Help!

---

<div class="post-metadata">

**Author:** ![vinay](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/6a8cbe/32.png) [@vinay](https://www.ruby-forum.com/u/vinay)\
**Post date:** [November 5, 2008, 6:30am UTC](https://www.ruby-forum.com/t/railscast-75-observe-field-and-shopping-cart/151671/5 "2008-11-05T06:30:47Z")

</div>

has noone got a pointer? I need a fair idea of how to go about this.  
Any help at all will be useful. Thanks!
