From: Xavier Noria Date: 2013-07-21T18:08:50+09:00 Subject: Re: ActiveSupport undercore behaviour --047d7b10c79d6e9d6e04e201e819 Content-Type: text/plain; charset=UTF-8 I am on the phone, but my guess is that the quotes and backslashes are generated by #inspect. Regarding the output, the input structure is nested. Your iterators do no match the nesting. Try going one level at a time and compare. On Sunday, July 21, 2013, Serguei Cambour wrote: > 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/. > > --047d7b10c79d6e9d6e04e201e819 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I am on the phone, but my guess is that the quotes and backslashes are gene= rated by #inspect.

Regarding the output, the input struc= ture is nested. Your iterators do no match the nesting. Try going one level= at a time and compare.

On Sunday, July 21, 2013, Serguei Cambour wrote:
tamouse m. wrote in post #1116149:
> On Jul 20, 2013, at 2:51 PM, Serguei Cambour <l= ists@ruby-forum.com>
> wrote:
>
>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{"Seat"=3D>"2"= , "Colour"=3D>18, },
>> TECHS.each_value do |value|
>> \"available_posts\"=3D>[{\"seat\"=3D>\&q= uot;2\", \"colour\"=3D>18},
>> {\"seat\"=3D>\"3\", \"colour\"=3D= >19}, {\"seat\"=3D>\"4\", \"colour\"=3D= >181},
>> {\"seat\"=3D>\"5\", \"colour\"=3D= >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 w= hat
> you get from declaring two passed in values from the map method -- it<= br> > only passes in the current value of the array that your original
> TECH['platform'] is pointing at, so k is current value, v is a= lways nil.
>
> 2.0.0-p247 :008 > [1, 2, 3, 4].map{|k,v| [k,v]}
> =C2=A0=3D> [[1, nil], [2, nil], [3, nil], [4, nil]]
>
> Even if your array elements are hashes, there's still only one val= ue
> 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]}
> =C2=A0=3D> [[{:a=3D>1, :b=3D>2, :c=3D>3}, nil], [{:aa=3D&g= t;11, :bb=3D>22, :cc=3D>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<= br> with 'underscore' method. I hoped to get them formatted with
'underscore' as follows:

ARR: [[{"assigned_name"=3D>"p1", "export_price&= quot;=3D>"usd"... etc.

but got all of them prefixed with a backslash, just before every quote:

"{\"assigned_name\"=3D>\"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/.

--047d7b10c79d6e9d6e04e201e819--