HOW-TO Create an Array of Hashes in Ruby

71,164

Solution 1

You're using a Symbol as the index into the Hash object that uses String objects as keys, so simply do this:

@collection = array[0]["firstname"]

I would encourage you to use Symbols as Hash keys rather than Strings because Symbols are cached, and therefore more efficient, so this would be a better solution:

def collection
  hash = { :firstname => "Mark", :lastname => "Martin", :age => 24, :gender => "M" }
  array = []
  array.push(hash)
  @collection = array[0][:firstname]
end

Solution 2

You have defined the keys of your hash as String. But then you are trying to reference it as Symbol. That won't work that way.

Try

@collection = array[0]["firstname"]

Solution 3

You can do this:

@collection = [{ "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }]
Share:
71,164
thedeepfield
Author by

thedeepfield

Ruby/RoR, Python/Django, JAVA/Android.

Updated on January 24, 2020

Comments

  • thedeepfield
    thedeepfield over 4 years

    New to ruby and I'm trying to create an array of hashes (or do I have it backwards?)

    def collection
      hash = { "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }
      array = []
      array.push(hash)
      @collection = array[0][:firstname]
    end
    

    @collection does not show the firstname for the object in position 0... What am I doing wrong?

    Thanks in advance!