2016-05-15 3 views
1

У меня есть этот JSon данные (фактические данные намного больше, поэтому мне нужно только 2)Получить конкретные данные JSon рельсы

[ 
    { 
    "id": 1, 
    "user_id": 1, 
    "event_id": 1, 
    "creator_id": 1, 
    "event_name": "Poker", 
    "cruise_ship_name": "Royal Cruise", 
    }, 
    { 
    "id": 2, 
    "user_id": 1, 
    "event_id": 2, 
    "creator_id": 1, 
    "event_name": "Ballroom", 
    "cruise_ship_name": "Celebrity Infinity", 
    }, 
    { 
    "id": 3, 
    "user_id": 1, 
    "event_id": 3, 
    "creator_id": 1, 
    "event_name": "Tennis", 
    "cruise_ship_name": "Mediterranean", 
    } 
] 

Я хочу, чтобы объединить все данные и получить только определенные поля (EVENT_NAME и cruise_ship_name)

Таким образом, в моем окончательном формате JSON

будет:

[ 
    { 
    "event_name": "Mexican Fiesta", 
    "cruise_ship_name": "Celebrity Infinity", 
    } 
] 

у меня есть рассматривал этот пример:

@object.to_json {:include => [ :assocation_a, :assocation_b ]} 

, но не уверен, что: association_a и: association_b.

+0

Возможно, дубликат: http://stackoverflow.com/questions/6919147/restrict-specific-fields-in-the-response-of-rails-controller – Jon

ответ

0

Предположим, у вас есть массив хэшей:

events = [ 
    { 
    "id": 1, 
    "user_id": 1, 
    "event_id": 1, 
    "creator_id": 1, 
    "event_name": "Poker", 
    "cruise_ship_name": "Royal Cruise", 
    }, 
    ... 
] 

Вы можете перебирать каждое значение в вашей хэш, только сохраняя значения, представляющие интерес:

events.each do |event_hash| 
    event_hash.keep_if { |key, _| [:event_name, :cruise_ship_name].include?(key) } 
end 

puts events 
0

Метод to_json принимает параметры, которые позволяют вам включают конкретные атрибуты:

@object.to_json(only: [:event_name, :cruise_ship_name]) 

вариант объекта, позволяющий ассоциацию объектов в модели assocation_a также преобразовывать в JSON.

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