Forum: Ruby on Rails Railscast 75, Observe_field and Shopping Cart

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
2dddec0f7717cae77ac6bceede6be5bc?d=identicon&s=25 Vinay (Guest)
on 2008-10-24 09:32
(Received via mailing list)
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.
2dddec0f7717cae77ac6bceede6be5bc?d=identicon&s=25 Vinay (Guest)
on 2008-10-25 06:27
(Received via mailing list)
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.
4c438a80fc30661ad619ea177cf9cbd0?d=identicon&s=25 Freddy Andersen (Guest)
on 2008-10-26 00:38
(Received via mailing list)
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
2dddec0f7717cae77ac6bceede6be5bc?d=identicon&s=25 Vinay (Guest)
on 2008-10-28 06:27
(Received via mailing list)
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!
2dddec0f7717cae77ac6bceede6be5bc?d=identicon&s=25 Vinay (Guest)
on 2008-11-05 06:30
(Received via mailing list)
has noone got a pointer? I need a fair idea of how to go about this.
Any help at all will be useful. Thanks!
This topic is locked and can not be replied to.