From: Serguei Cambour Date: 2013-07-21T16:21:46+09:00 Subject: Re: ActiveSupport undercore behaviour tamouse m. wrote in post #1116149: > On Jul 20, 2013, at 2:51 PM, Serguei Cambour > wrote: > >> {"Seat"=>"2", "Colour"=>18, }, >> TECHS.each_value do |value| >> \"available_posts\"=>[{\"seat\"=>\"2\", \"colour\"=>18}, >> {\"seat\"=>\"3\", \"colour\"=>19}, {\"seat\"=>\"4\", \"colour\"=>181}, >> {\"seat\"=>\"5\", \"colour\"=>183}]}]}", nil]] >> >> Why are there some extra quotes and nil in the very end ? Thkx >> >> -- >> Posted via http://www.ruby-forum.com/. >> > > Not 100% sure what you're seeing as extra quotes, but the nil is what > you get from declaring two passed in values from the map method -- it > only passes in the current value of the array that your original > TECH['platform'] is pointing at, so k is current value, v is always nil. > > 2.0.0-p247 :008 > [1, 2, 3, 4].map{|k,v| [k,v]} > => [[1, nil], [2, nil], [3, nil], [4, nil]] > > Even if your array elements are hashes, there's still only one value > passed in from map: > 2.0.0-p247 :009 > [{a: 1, b: 2, c: 3}, {aa: 11, bb: 22, cc: > 33}].map{|k,v| [k,v]} > => [[{:a=>1, :b=>2, :c=>3}, nil], [{:aa=>11, :bb=>22, :cc=>33}, nil]] Thanks a lot for the reply. My hash has one value - an array of nested hashes, that's why I looped on that array and tried to format the keys with 'underscore' method. I hoped to get them formatted with 'underscore' as follows: ARR: [[{"assigned_name"=>"p1", "export_price"=>"usd"... etc. but got all of them prefixed with a backslash, just before every quote: "{\"assigned_name\"=>\"p1\" I'd like to pass that hash to update an ActiveRecord value with update_attributes and it will fails with the above hashes. Any idea? Thank you. -- Posted via http://www.ruby-forum.com/.