Ruby Hash Querying


#1

Hello,
I am new to Ruby and have run into a small snag. I have a hash like
so:

@documentnames = {
:finance_whitepaper => ‘whitepaper one’,
:ecommerce_whitepaper => ‘whitepaper two’,
:integratedsvs_datasheet => ‘whitepaper three’
}

So I am trying to then go like so:

@documentnames[k]

where k is a variable in a loop with the key from the has minus the
“:” in front

But if I try to add the “:” in front

<%key = ‘:’ + k%>

And then try to reference the element

<%= @documentnames[key] %>

I get a null value…


#2

OK I answered my own question…sorry. But here is the answer in case
someone else asks the same silly question:

Use a string as a key (doh!)

@documentnames = {
‘finance_whitepaper’ => ‘whitepaper one’,
‘ecommerce_whitepaper’ => ‘whitepaper two’,
‘integratedsvs_datasheet’ => ‘whitepaper three’
}

Problem solved!


#3

On 6/13/07, kwest removed_email_address@domain.invalid wrote:

<%key = ‘:’ + k%>

And then try to reference the element

<%= @documentnames[key] %>

I get a null value…

That happens because the keys are symbols, and not strings starting
with “:”. Try either using strings instead of symbols as hash keys
(i.e., ‘finance_whitepaper’ rather than :finance_whitepaper - note que
quotes) or using k.to_sym inside the loop.


#4

Great thank you. That is too easy. I am liking this.

On Jun 13, 11:36 am, Daniel K. removed_email_address@domain.invalid


#5

kwest schrieb:

<%key = ‘:’ + k%>

And then try to reference the element

<%= @documentnames[key] %>

I get a null value…

The “:whatever” is a Ruby-Symbol, and you’re trying to kinda “fake” it
with a String. However, the answer is really easy, just use:
@documentnames[k.to_sym]