On Jul 21, 2013, at 12:21 AM, Serguei C. [email protected]
wrote:
Why are there some extra quotes and nil in the very end ? Thkx
2.0.0-p247 :008 > [1, 2, 3, 4].map{|k,v| [k,v]}
with ‘underscore’ method. I hoped to get them formatted with
Thank you.
Oh, I see – the “extra” quotes and backslashes are the output of
inspect. Note the difference in irb:
2.0.0-p247 :011 > TECHS.inspect
=> “{"platform"=>[{"AssignedName"=>"P1",
"ExportPrice"=>"USD", "Id"=>"1", "Delivery"=>"Y",
"RegisteredMembers"=>[{"Name"=>"Admin", "Id"=>"3",
"AvailablePosts"=>[{"Seat"=>"2", "Colour"=>18},
{"Seat"=>"3", "Colour"=>19}, {"Seat"=>"4", "Colour"=>181},
{"Seat"=>"5", "Colour"=>183}]}]}]}”
2.0.0-p247 :012 > TECHS
=> {“platform”=>[{“AssignedName”=>“P1”, “ExportPrice”=>“USD”,
“Id”=>“1”, “Delivery”=>“Y”, “RegisteredMembers”=>[{“Name”=>“Admin”,
“Id”=>“3”, “AvailablePosts”=>[{“Seat”=>“2”, “Colour”=>18}, {“Seat”=>“3”,
“Colour”=>19}, {“Seat”=>“4”, “Colour”=>181}, {“Seat”=>“5”,
“Colour”=>183}]}]}]}
2.0.0-p247 :013 >
The second one is the actual value of TECHS.
Let’s take another stab at this.
TECHS is a hash with only one key: ‘platform’:
2.0.0-p247 :019 > TECHS.class
=> Hash
2.0.0-p247 :020 > TECHS.keys
=> [“platform”]
which contains an array of 1 item:
2.0.0-p247 :021 > TECHS[‘platform’]
=> [{“AssignedName”=>“P1”, “ExportPrice”=>“USD”, “Id”=>“1”,
“Delivery”=>“Y”, “RegisteredMembers”=>[{“Name”=>“Admin”, “Id”=>“3”,
“AvailablePosts”=>[{“Seat”=>“2”, “Colour”=>18}, {“Seat”=>“3”,
“Colour”=>19}, {“Seat”=>“4”, “Colour”=>181}, {“Seat”=>“5”,
“Colour”=>183}]}]}]
2.0.0-p247 :022 > TECHS[‘platform’].class
=> Array
2.0.0-p247 :023 > TECHS[‘platform’].count
=> 1
That one item is the thing you actually want to convert to pass to you
model, yes? So without all the hoopla, try:
2.0.0-p247 :027 > params = Hash[TECHS[‘platform’].first.map{|k,v|
[ActiveSupport::Inflector.underscore(k.to_s),v]}]
=> {“assigned_name”=>“P1”, “export_price”=>“USD”, “id”=>“1”,
“delivery”=>“Y”, “registered_members”=>[{“Name”=>“Admin”, “Id”=>“3”,
“AvailablePosts”=>[{“Seat”=>“2”, “Colour”=>18}, {“Seat”=>“3”,
“Colour”=>19}, {“Seat”=>“4”, “Colour”=>181}, {“Seat”=>“5”,
“Colour”=>183}]}]}
I’m not sure what you want to be doing with the registered_members
value, and the AvailablePosts key underneath that. Are these nested
parameters for going in other tables with relationships? If so, you’ll
need to run those through the same method above. It would probably be
very worthwhile to make that an actual method, that could be called
recursively if v is something you want to work on (Hash, Array, Object).