0

次のような2次元ハッシュを作成しようとしています。

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']の別のハッシュ内にハッシュがあるようです[{}]!!!

このように登録するための読み取り権限にアクセスしたいのですpermissions['enrollment']['read']が、それによるputs permissionと機能せず、このエラーが発生しますTypeError: can't convert String into Integer

登録の読み取り権限にアクセスするには、次のことを行う必要がありますpermissions['enrollment'][0]['read']

このように登録の読み取り権限を設定するにはどうすればよいですか... permissions['enrollment']['read']

4

1 に答える 1

4

構文がオフです。ハッシュは中括弧で区切られます。角括弧はアレイ用です。PHPの世界から来ている場合は、2つを混同する可能性があります。これを試して:

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 に答える