text_field_tag - different parameter name

Hi, I have one problem with validation

I am creating e-shop and I have products. This view look like this:

<% for product in @category.products %>   <div class="produktyBox">

      <%= product.title %><br />       Price: <br />       <div style="color:red; font-size:large; font-weight:bold; margin- bottom:5px"><%= number_with_delimiter(product.price, " ")%> Kč</

      <%= link_to "Details", {:action => "product", :id => product.name_seo} %>

        <% form_tag :action => "add_to_cart" do %>           <p>             <%= text_field_tag :quantity, "1", :size => 1 %>             <%= submit_tag "Buy" %>             </p>         <% end %>

  </div> <% end %>

In controller I need get value of text_field_tag (@value = params[:quantity] ) Problem is with validation : ID "quantity" already defined

I need something like this <%= text_field_tag "quantity_"+product.id, "1", :size => 1 %> .

This I get different name of text_field, but I don't know, How can I get params to controller

Thank you

I'll go out on a limb and guess that you might have an object like 'LineItem' in your domain where:

class LineItem   belongs_to :order   has_one :product   ... end

LineItem has quantity and maybe discount_rate as attributes. With that in mind:

<% @category.products.each do |product| %>   <div class="produktyBox">

      <%= product.title %><br />       Price: <br />       <div style="color:red; font-size:large; font-weight:bold; margin- bottom:5px"><%= number_with_delimiter(product.price, " ")%> Kč</

      <%= link_to "Details", {:action => "product", :id => product.name_seo} %>

        <% form_for :line_item, LineItem.new(:product=>product), :url => url_for(:controller=>:order, :action=>:add_to_cart) do |f| %>           <%= f.hidden_field :product_id %>           <p>             <%= f.text_field :quantity, "1", :size => 1 %>             <%= submit_tag "Buy" %>             </p>         <% end %>   </div> <% end %>

There are other improvements that you could make here, but the core of what's going on is that you're wrapping the info going back to the add_to_cart action in a line_item hash. The main change was using form_for rather than form_tag so that you could wrap the product_id (you'll need that, right?) along with the quantity in a line_item hash (controller's perspective). To create an instance you'd:

item = LineItem.new( params[:line_item])

in your controller and it'd be loaded with both the quantity AND product.

HTH, AndyV

HTH, AndyV