Symbol as array index error?

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

On Mar 18, 9:40 pm, Dudebot [email protected] wrote:

“145”: !map:HashWithIndifferentAccess
unit_id: “4”
lab_desc_id: “3”
value: “”

But when I try

@monkey.delete_if{ |x| x[ :value ].blank? }

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

On Mar 18, 4:59 pm, Frederick C. [email protected]
wrote:

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.

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

On Mar 19, 12:37 am, Dudebot [email protected] wrote:

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?

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

On Mar 18, 8:07 pm, Frederick C. [email protected]
wrote:

On Mar 19, 12:37 am, Dudebot [email protected] wrote:> 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?

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.

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 :slight_smile:

TIA,
Craig