Dudebot
(Dudebot)
March 18, 2010, 9:40pm
1
Anybody have any idea why this is throwing an error:
@monkey = params[ :lab ][ :existing_lab_data_attributes ]
raise @monkey.to_yaml
--- !map:HashWithIndifferentAccess
"133": !map:HashWithIndifferentAccess
unit_id: "2"
lab_desc_id: "2"
value: "500"
"145": !map:HashWithIndifferentAccess
unit_id: "4"
lab_desc_id: "3"
value: ""
...
But when I try
@monkey.delete_if { |x| x[ :value ].blank? }
I get the error:
Symbol as array index
Any ideas what's happening, and how to delete blanks in @monkey ?
Many TIA,
Craig
Because @monkey is a hash what gets yielded to you is an array, the
first element is the key (ie '133' or '145') and the second is the
value, whereas your code seems to assume that x is a hash.
Fred
Dudebot
(Dudebot)
March 19, 2010, 12:37am
3
Sorry for being so dense, but why does
@monkey.delete_if { |k,v| v[ "value" ] == '' }
Throw the same error? Any idea what the proper syntax would be to
delete the element for which value is blank?
TIA,
Craig
Shouldn't do - apart from anything else you're not using any symbols
in this one, and it seems to work ok on my machine.
Fred
Dudebot
(Dudebot)
March 19, 2010, 1:19am
5
I haven't been able to get a strategy which deletes, but have been
able to get a building strategy:
@purple = {}
@monkey.each { |k,v| @purple [ k ] = v if !v[ :value ].blank? }
which works.
Any ideas how to get syntax working which deletes instead of builds..
because I'm obsessive compulsive
TIA,
Craig