2015-04-14 2 views
-3

У меня есть рубин массив под названием деятельность со следующими данными:рубин доступа значение в хэш

{ 
    "activity"=> 
     { 
     "data"=>{}, 
     "name"=>"password_update", 
     "created_at"=>"2015-04-13T06:22:44Z"} 
     } 

    { 
    "activity"=> 
     { 
     "data"=>{}, 
     "name"=>"password_update", 
     "created_at"=>"2015-04-13T06:22:44Z" 
     } 
    } 

Как идти об извлечении только значения ключа имя?

Я хочу извлечь значения «password_update» для каждого из видов деятельности ... если это имеет смысл?

ответ

4

«массив», как вы говорите, его вообще недействительно ... он похож на структуру хэша с теми же именованными ключами! (Хэш может содержать только один уникальный ключ и значение для него в противном случае значения ключа перекрытый ... Мы можем предположить, у вас есть что-н так:

activities = [ 
    { 
    "activity"=> 
     { 
     "data"=>{}, 
     "name"=>"password_update_1", 
     "created_at"=>"2015-04-13T06:22:44Z"} 
     } 
    }, 
    { 
    "activity"=> 
     { 
     "data"=>{}, 
     "name"=>"password_update_2", 
     "created_at"=>"2015-04-13T06:22:44Z" 
     } 
    }] 

Это выглядит как массив хэш, теперь вы хотите чтобы получить «имя» от каждого объекта, вы можете просто использовать функцию карты (создать массив из результатов блока) и хеш [] accessors ..

names = activites.map { |v| v['activity']['name'] } 
# The result: 
# names = [ 'password_update_1', 'password_update_2' ] 
Смежные вопросы