2013-05-18 37 views
0

我在红宝石下面的散列(@myhash):如何从Ruby中的散列中获取值?

[ 
    { 
    "id"  => "123456789", 
    "name"  =>"Random name", 
    "list_type" =>"random type of list" 
    } 
] 

如何采取id的值进行哈希? (基本上我的结果应该是:123456789)

  • 当我尝试做@myhash[:id]我得到以下错误“无法转换成符号整数”
  • 当我尝试做@myhash['id']我得到以下错误“可以”牛逼转换成字符串整数”

我已经尝试添加.to_i.to_s等,但没有什么帮助。

+2

请直接说出您的术语。你有一个红宝石哈希,而不是一个轨道哈希。 Ruby是一种语言。 Rails是用Ruby编写的库/框架。这就像说“我在jQuery中编程”。不,你用Javascript编程,你*使用* jQuery。 –

+2

据我所知,由于您是新手,因此您可能都看起来一样。但请,学会区分这两者。 –

回答

9

你在那里没有散列。它是一个哈希数组(确切地说,是一个哈希数组,确切地说)。

首先,您必须解决数组中的正确元素(第一个元素),然后通过键来解决其值。

@myhash[0]['id'] # => '123456789' 
# or 
@myhash.first['id'] # => '123456789' 

我得到以下错误“无法转换成符号整数”

你以为你用哈希工作,但在现实中,它的阵列。数组不接受字符串或符号键。他们想要索引的整数。因此错误。

+0

downvote?这篇文章如何改进? –

+0

它的工作原理!感谢您的快速回复。 – deyan

+0

这是我的荣幸:) –

2

红宝石Hash看起来像{},而[]Array。你的对象是第一个也是唯一的项目是散列的数组。要访问它使用以下内容:

@myhash.first['id'] # 123456789'