Hi,
This is my definition of method "add_to_cart"
====================== def add_to_cart
count=params[:product][:count]
while count.to_i>=0.to_i
if
params[:product][''dem_quantity''+count.to_s]==""
else
@product =
Product.find(params[:product][''product_id''+count.to_s])
print @product.name
@product.update_attributes(params[:product][''dem_quantity''+count.to_s])
end
count=count.to_i-1
end
end
======================
With this method I am trying to just update values of the field
"demand"
in the database corresponding to particular "id". But when I m
executing
this I m getting error like:-
==========undefined method `stringify_keys!'' for "5":String
==========
Application Trace of error is:-
========================C:/local/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:1333:in
`attributes=''
C:/local/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:1266:in
`update_attributes''
#{RAILS_ROOT}/app/controllers/products_controller.rb:15:in
`add_to_cart''
-e:3
========================
What is wrong in above method?
Please tell me.
Thanx in advance.
Prash
--
Posted via http://www.ruby-forum.com/.
Am Mittwoch, den 22.03.2006, 10:15 +0100 schrieb Prashant Tiwari:> Hi, > > This is my definition of method "add_to_cart" > ======================> def add_to_cart > count=params[:product][:count] > while count.to_i>=0.to_i > if params[:product][''dem_quantity''+count.to_s]=="" > > else > @product = > Product.find(params[:product][''product_id''+count.to_s]) > print @product.name > @product.update_attributes(params[:product][''dem_quantity''+count.to_s]) > end > count=count.to_i-1 > end > end > ======================> > With this method I am trying to just update values of the field "demand" > in the database corresponding to particular "id". But when I m executing > this I m getting error like:- > ==========> undefined method `stringify_keys!'' for "5":String > ==========> > Application Trace of error is:- > ========================> C:/local/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:1333:in > `attributes='' > C:/local/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:1266:in > `update_attributes'' > #{RAILS_ROOT}/app/controllers/products_controller.rb:15:in `add_to_cart'' > -e:3 > ========================> > What is wrong in above method?The error tells you, that you have a String where a Hash was expected. Make sure params[:product] contains a Hash. -- Norman Timmler http://blog.inlet-media.de
Prashant Tiwari wrote:> ======================> def add_to_cart > count=params[:product][:count] > while count.to_i>=0.to_i > if params[:product][''dem_quantity''+count.to_s]=="" > > else > @product = > Product.find(params[:product][''product_id''+count.to_s]) > print @product.name > @product.update_attributes(params[:product][''dem_quantity''+count.to_s]) > end > count=count.to_i-1 > end > end > ======================> What is wrong in above method?I see you assign count as a string from the params, then start a while loop using that string. Then you do "count.to_s" which attempts to stringify a string. That, or the count.to_i after you assign it to a numeric object. Chris