0

我正在尝试创建一个二维哈希,如下所示:

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}]
 }

从上面的输出可以看出,权限['enrollment'] 的另一个散列中似乎有一个散列[{}]!!!

我想像这样访问注册的读取权限:permissions['enrollment']['read']但根据puts permission它不起作用,我收到此错误TypeError: can't convert String into Integer

为了让我访问注册的读取权限,我必须这样做:permissions['enrollment'][0]['read'].

我怎样才能像这样使注册读取权限... permissions['enrollment']['read']

4

1 回答 1

4

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

permissions = Hash.new
permissions['enrollment'] = {'read' => true, 'create' => true, 'update' => true}
permissions['invoices'] = {'read' => true, 'create' => false, 'update' => false}
于 2012-04-13T18:11:59.970 回答