为什么在向散列添加散列时,Ruby似乎嵌套了添加的散列?

问题描述:

我试图创建如下所示的二维散列:为什么在向散列添加散列时,Ruby似乎嵌套了添加的散列?

permissions['enrollment'] = ['read' => true, 'create' => true, 'update' => true] 
permissions['invoices'] = ['read' => true, 'create' => false, 'update' => false] 

这是我做的......

permissions = Hash.new 
permissions['enrollment'] = ['read' => true, 'create' => true, 'update' => true] 
permissions['invoices'] = ['read' => true, 'create' => false, 'update' => false] 

当我“放”在IRB权限我得到这个...

{ 
    "enrollment"=>[{"read"=>true, "create"=>false, "edit"=>false}], 
    "invoices"=>[{"read"=>true, "create"=>false, "update"=>false}] 
} 

正如你可以从上面的输出看,似乎是权限另一散列内的哈希[“招生”] [{}]

我要访问的读取权限这样招生:permissions['enrollment']['read'],但根据puts permission它不会工作,我得到这个错误TypeError: can't convert String into Integer

对于我访问入学读权限,我需要做的这个:permissions['enrollment'][0]['read']

如何使注册读取权限如此... permissions['enrollment']['read']

您的语法关闭。哈希由花括号分隔。方括号用于数组。如果你来自PHP世界,你可能会混淆两者。试试这个:

permissions = Hash.new 
permissions['enrollment'] = {'read' => true, 'create' => true, 'update' => true} 
permissions['invoices'] = {'read' => true, 'create' => false, 'update' => false} 
+0

是的,来自PHP世界。谢谢 :) – leonel 2012-04-13 18:47:22