Is this possible? If so, how…???
array = [ {:key1 => “value1”}, {:key2 =>“value2”} ]
to retrieve them you can do something like this:
array.each do |hash|
hash.each do |key, value|
puts key
puts value
end
end
a = [ { :one => 1 } ]
Hi –
On Wed, 27 Sep 2006, bluengreen wrote:
Is this possible? If so, how…???
[ { 1 => 2, 3 => 4 }, { “apple” => “red”, “banana” => “yellow” } ]
David
–
David A. Black | [email protected]
Author of “Ruby for Rails” [1] | Ruby/Rails training & consultancy [3]
DABlog (DAB’s Weblog) [2] | Co-director, Ruby Central, Inc. [4]
[1] Ruby for Rails | [3] http://www.rubypowerandlight.com
[2] http://dablog.rubypal.com | [4] http://www.rubycentral.org
Guest wrote:
array = [ {:key1 => “value1”}, {:key2 =>“value2”} ]
to retrieve them you can do something like this:
array.each do |hash|
hash.each do |key, value|
puts key
puts value
end
end
What’s the advantage of using :key as opposed to “key”? I’ve seen it
advertised as a ‘best practice’ on the Rails Wiki, but it didn’t go into
the rationale.
Thanks,
Nelson
:key is a Symbol literal which is always the same object in memory.
“key” is a String literal which will create a new object every time you
say “key”. So, there are performance gains, but more important for me
are the semantics of a symbol (think of it like an identifier or a
name) and the simple fact that you type and look at less code.
Symbols are somewhat tricky to really understand, but I think some of
the details are no important once you get used to common usage. They
will eventually be a type of String with Ruby 2, but for now, though
they seem similar, :key.is_a?(String) returns a most certain false.
Thanks for all the reply’s. Unfortunately i was leaving work when I
wrote the thread and I was a little brain dead from trying to solve a
problem. I meant to say into sessions not arrays.
I’m trying to save hashes into the session and I keep getting 500
errors and TypeErrors.
I’m trying to connect to a LDAP directory and save the entry from a
search into session for caching from page to page with looking it up
again.
This is how the applications we have at my work have been written and
I want to follow the same methodology. But I keep getting the
errors. I know it’s probably related to the object/hash being passed
can not be marshaled. However, my Ruby skills are weak at best. So
that doesn’t mean squat to me. I pass it to a temp var, I’ve used
to_s and that works but I can’t get me stuff back out like I want.
It’s just one big string. I pass the hash using to_hash and it gives
the same errors as if I passed the object directly.
I dunno. Do you guys know?
thanks,
phill
Oops I meant sessions
a = Array.new
=> []h1 = Hash.new
=> {}h2 = Hash.new
=> {}h3 = Hash.new
=> {}h1[:stuff] = ‘marshmallows’
=> “marshmallows”h2[:stuff] = ‘graham crackers’
=> “graham crackers”h3[:stuff] = ‘hershey bar’
=> “hershey bar”a << h1
=> [{:stuff=>“marshmallows”}]a << h2
=> [{:stuff=>“marshmallows”}, {:stuff=>“grahm crackers”}]a << h3
=> [{:stuff=>“marshmallows”}, {:stuff=>“grahm crackers”},
{:stuff=>“hershey bar”}]
bluengreen ïèøåò:
Oops I meant sessions
bluengreen wrote:
Is this possible? If so, how…???
Why not ?
session[:blah] = { :apple => ‘red’ }
session[:blah][:foo] = ‘bar’
yeah read my follow up…hash in arrays
it’s been a pain…mainly because I don’t know Ruby enough …
you can always examine the contents of the hash in the development error
screen and see the hash arrays (key => ‘value’) and see what you need to
see.
or
create a simple view template that has
<%= debug session %>
which will display your session hash in nice formed statements
Craig