2012-04-13 71 views
0

我試圖創建如下所示的二維散列:爲什麼在向散列添加散列時,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']

回答

4

您的語法關閉。哈希由花括號分隔。方括號用於數組。如果你來自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