0

サーバーに戻ってくるものをデバッグするために、次のコードブロックがあります。

task = JSON.parse(request.body.read)

puts task.inspect
puts 'description hash: ' 
puts task[:description]

このコードブロックを実行すると、次のようになります。

{"completed" => false, "task_type" => 0, "description"=> "second task"}
description hash: 
nil

このハッシュにアクセスする別の方法はありますか?私が見たものから、検査は説明値を示しているからです。

4

2 に答える 2

4

問題

与えた例では、「description」のハッシュキーを定義していますが、代わりに:descriptionキーを検索していますが、これは存在しません。その理由は、最初は文字列で、2番目は記号であるためです。

"description".class
=> String

:description.class
=> Symbol

ソリューション

キーを文字列で検索するか、キーが常に文字列であることがわかっている場合は、添え字で#to_sを呼び出しますが、添え字はそうではない場合があります。

task['description']
=> "second task"

task[:description.to_s]
=> "second task"
于 2012-06-09T15:48:27.903 に答える
1

:descriptionと同じではありません'description'。これは機能するはずです:

puts task['description']
于 2012-06-09T15:40:44.753 に答える