2014-12-25 3 views
0

Я пытаюсь создать бэкэнд для системы календаря. Календарь - это всего лишь список Event s. Я пытаюсь организовать это для разумного ответа JSON. Структура, которую я хочу воспроизвести, будет примерно такой:Добавление и удаление хэшей в массивах

eventsList = [ 
    { 'year' => 2014, 
    'events' => [{event data hash 1}, 
        {event data hash 2}] 
    }, 
    { 'year' => 2015, 
    'events' => [{event data hash 1}, 
        {event data hash 2}] 
    } 
] 

У меня возникли проблемы с попыткой добавить события в нужный массив. Ниже у меня есть Event.all, и я пытаюсь сортировать список.

events = Event.all 
eventList = [] 


events.each do |event| 
    #Creates a hash of the current event info 
    eventInfo = {'description' => event.description, 'startdate' => event.startdate} 

    eventMonthNumber = event.startdate.strftime('%m').to_i 
    eventMonthName = event.startdate.strftime('%B') 
    eventYearNumber = event.startdate.strftime('%Y').to_i 

    # Adds year to eventList if it isn't present 
    unless eventList.include?(eventYearNumber) 
     eventList << {'year' => eventYearNumber, 'events' => []} 
    end 

    # Tries to find current year hash in array and add to event key 
    currentYear = eventList.select {|event| event['year'] == eventYearNumber} 
    currentYear['events'] << eventInfo 
end 

Я получаю ошибку no implicit conversion of String into Integer. Я не совсем уверен, правильно ли подходит eventList.select.

Любая помощь будет оценена по достоинству.

+0

Что такое тип данных 'event ['year']'? –

+4

Я сделал систему календаря около года назад https://github.com/mzaragoza/rails-fullcalendar-icecube, когда событие добавляется/удаляется. Я делаю новый звонок для json, и я надеюсь, что это поможет – MZaragoza

+0

@ PrakashMurthy Это целое число – Deepak

ответ

0

Хотя я отошел от этой текущей структуры изменения, которые сделали его работа была замена из

eventList.select 

для

eventList.detect 

Select возвращает массив (?) И обнаружения возвращает один элемент.

С Рождеством!

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