2015-01-03 4 views
1

У меня есть массив:`[] ': не может преобразовать строку в Integer (TypeError)

sheets # => [{"id"=>3, "subject"=>"www", "body"=>"www", "target_groups"=>"www", 0=>3, 1=>"www", 2=>"www", 3=>"www"}] 

Я пытаюсь вызвать определенный элемент внутри этого массива. Я пробовал следующее:

puts sheets[2] # => nil 
puts sheets["subject"] # => `[]': can't convert String into Integer (TypeError) 
puts sheets["subject.to_i"] # => `[]': can't convert String into Integer (TypeError) also. 

Справка была бы оценена.

ответ

4

Хэш-объект находится внутри массива.

Вы должны сначала (sheets[0]) выборка объекта хэша, то вы можете использовать ключ для извлечения элемента вы хотите:

sheets = [{"id"=>3, "subject"=>"www", "body"=>"www", 
      "target_groups"=>"www", 0=>3, 1=>"www", 2=>"www", 3=>"www"}] 
sheets[0]["subject"] 
# => "www" 
+0

удивительного thankyou1 –

+0

@falsetru обычно в хэш ключ/значения не сохраняются в памяти в указанной нами последовательности, поэтому, если мы укажем листы [0], тогда будет написано id – khan

+0

@khan, 'sheets' не является хешем, а массивом хэшей:' sheets = [...] ' – falsetru

Смежные вопросы