I’ve been following the “Agile Web D. 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:
<% 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?.
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.
from something slightly different (my Item objects have a description
{“items”=>{“345698069”=>{“description”=>“third item”},
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 (The Well-Grounded Rubyist)
I did exactly that, and it shows the array, but not the identifiers,
anything else I’m missing?
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| %>
Description: <%= ff.text_field :description %>
<% 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 (The Well-Grounded Rubyist)
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.