I''ve been following the "Agile Web Development with Rails" book shopping cart tutorial, and I''ve been trying to modify the checkout so it lets me modify the quantity of items on checkout, so far I''ve added a new action on the controler cart_checkout wich has the following view: <h2>Finish shopping</h2> <% form_for :cart, @cart, :url => { :controller => ''store'', :action => ''cart_modify''} do |f| %> <% @items.each do |item| %> <p> <%=h item.product.name%> <%= text_field_tag item, item.quantity, { :size => 2, :maxlength => 3 } %> </p> <% end %> <%= f.submit("Buy") %> <% end %> It displays a text field with the quantity, but when I try to read the form on the controler, I don''t know how to access each item and relate it to its correspondig cart item in order to modify the quantity. Can anyone point me in the right direction?. Thanks
I think you want to use the fields_for helper so rails will give you an array of form params to hold the various items. You should also probably include a hidden text field in there to hold the id of each item so you know which quantity should go w/which item. HTH, -Roy -----Original Message----- From: rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org [mailto:rubyonrails-talk@googlegroups.com] On Behalf Of jask Sent: Monday, September 14, 2009 11:32 AM To: Ruby on Rails: Talk Subject: [Rails] accesing post array I''ve been following the "Agile Web Development with Rails" book shopping cart tutorial, and I''ve been trying to modify the checkout so it lets me modify the quantity of items on checkout, so far I''ve added a new action on the controler cart_checkout wich has the following view: <h2>Finish shopping</h2> <% form_for :cart, @cart, :url => { :controller => ''store'', :action => ''cart_modify''} do |f| %> <% @items.each do |item| %> <p> <%=h item.product.name%> <%= text_field_tag item, item.quantity, { :size => 2, :maxlength => 3 } %> </p> <% end %> <%= f.submit("Buy") %> <% end %> It displays a text field with the quantity, but when I try to read the form on the controler, I don''t know how to access each item and relate it to its correspondig cart item in order to modify the quantity. Can anyone point me in the right direction?. Thanks GHC Confidentiality Statement This message and any attached files might contain confidential information protected by federal and state law. The information is intended only for the use of the individual(s) or entities originally named as addressees. The improper disclosure of such information may be subject to civil or criminal penalties. If this message reached you in error, please contact the sender and destroy this message. Disclosing, copying, forwarding, or distributing the information by unauthorized individuals or entities is strictly prohibited by law.
Hi -- On Mon, 14 Sep 2009, Pardee, Roy wrote:> > I think you want to use the fields_for helper so rails will give you > an array of form params to hold the various items. You should also > probably include a hidden text field in there to hold the id of each > item so you know which quantity should go w/which item.Actually you shouldn''t need a hidden field. I''m adapting this example from something slightly different (my Item objects have a description field, rather than quantity), but here''s what I''ve got: <% @items.each do |item| %> <% fields_for "items[]", item do |ff| %> <p>Description: <%= ff.text_field :description %></p> <% end %> <% end %> and here''s what''s submitted to the controller in params: {"items"=>{"345698069"=>{"description"=>"third item"}, "345698067"=>{"description"=>"first item"}, "345698068"=>{"description"=>"second item"}}, "commit"=>"Buy", etc. } So now I can iterate through that hash, getting the id number and a hash of attributes each time. David -- David A. Black, Director Ruby Power and Light, LLC (http://www.rubypal.com) Ruby/Rails training, consulting, mentoring, code review Book: The Well-Grounded Rubyist (http://www.manning.com/black2)
On Sep 14, 4:12 pm, "David A. Black" <dbl...-0o/XNnkTkwhBDgjK7y7TUQ@public.gmane.org> wrote:> Hi -- > > On Mon, 14 Sep 2009, Pardee, Roy wrote: > > > I think you want to use the fields_for helper so rails will give you > > an array of form params to hold the various items. You should also > > probably include a hidden text field in there to hold the id of each > > item so you know which quantity should go w/which item. > > Actually you shouldn''t need a hidden field. I''m adapting this example > from something slightly different (my Item objects have a description > field, rather than quantity), but here''s what I''ve got: > > <% @items.each do |item| %> > <% fields_for "items[]", item do |ff| %> > <p>Description: <%= ff.text_field :description %></p> > <% end %> > <% end %> > > and here''s what''s submitted to the controller in params: > > {"items"=>{"345698069"=>{"description"=>"third item"}, > "345698067"=>{"description"=>"first item"}, > "345698068"=>{"description"=>"second item"}}, > "commit"=>"Buy", > etc. } > > So now I can iterate through that hash, getting the id number and a > hash of attributes each time. > > David > > -- > David A. Black, Director > Ruby Power and Light, LLC (http://www.rubypal.com) > Ruby/Rails training, consulting, mentoring, code review > Book: The Well-Grounded Rubyist (http://www.manning.com/black2)I did exactly that, and it shows the array, but not the identifiers, anything else I''m missing?