How to change quantity to cart?

hi all…
I’ve been studying ROR using the agile development ROR book.
and I’m stuck at the shopping cart.

what I am trying to do is that, from the book, the ‘add_to_cart’
button doesn’t take the quantity from the users.

well, What I am trying to do is that allowing users to input quantity
value
before pressing ‘add_to_cart’ and when ‘add_to_cart’ is pressed, the
users can see
the input values with the total price before checking out the items.

So, on the view, I added the following line.

Qty : <%= text_field_tag ‘quantity’, ‘1’, :size => 2, :maxlength => 2
%>

<% form_remote_tag :url => {:action => ‘add_to_cart’, :id => product }
do %>
<%= submit_tag “Add to Cart” %>
<% end %>

and the store_controller,

quantity = Integer(params[‘quantity’])

well…
the flashing cart shows 0 quantity.
i need help, please?

///////////////
Your Cart
0(quantity) × 1(prod_id) $0.00
Total $0.00
////////////////

--------------------------- (controller)
def add_to_cart
begin
product = Product.find(params[:id])
quantity = Integer(params[‘quantity’]) #------ i hope this is
right way to get quantity from the view

rescue ActiveRecord::RecordNotFound
logger.error(“Attempt to access invalid product #{params[:id]}” )
redirect_to_index(“Invalid product” )
else
@cart = find_cart
@current_item = @cart.add_product(product, quantity)
respond_to do |format|
format.js if request.xhr?
format.html {redirect_to_index}
end
end
end

--------------------------- (cart_item.rb)
def initialize(product, quantity)
@product = product
@quantity = quantity
end
def increment_quantity(quantity)
@quantity += quantity
end
def price

product has a p200 field with the price in it

@product.p200 * @quantity

end

-----------------------------(cart.rb)
def add_product(product, quantity)
current_item = @items.find {|item| item.product == product}
if current_item
current_item.increment_quantity(quantity)
else
current_item = CartItem.new(product, quantity)
@items << current_item
end
current_item
end

def total_price
@items.sum { |item| item.price }
end

    def total_items
           @items.sum { |item| item.quantity }
   end

The code you provided in your form:

Qty : <%= text_field_tag ‘quantity’, ‘1’, :size => 2, :maxlength => 2
%>
<% form_remote_tag :url => {:action => ‘add_to_cart’, :id =>
product }
do %>
<%= submit_tag “Add to Cart” %>
<% end %>

You need to have the quantity field within the form:

Qty :
<% form_remote_tag :url => {:action => ‘add_to_cart’, :id =>
product }
do %>
<%= text_field_tag ‘quantity’, ‘1’, :size => 2, :maxlength => 2
%>
<%= submit_tag “Add to Cart” %>
<% end %>

^^ Henry…
thanx …for checking my codes…
and pointing out the error…
it’s working now…

:slight_smile: