В объектах fullCalendar можно использовать только одну клавишу «события».
$('#calendar').fullCalendar({
events: '/events.json',
});
Если вы хотите, чтобы они оба существовали в одном и том же календаре, объедините их в контроллере или в JS.Объединить их в контроллере, вероятно, гораздо проще.
Это элементарный способ контроллера:
def action
@missions = Mission.all
@events = Event.all
@all_events = @events + @missions
respond_to do |format|
format.json { render json: @all_events }
format.html
end
end
Если вы хотите использовать файл jbuilder, то, возможно, он может выглядеть так:
missions = json.array! @missions do |mission|
date_format = '%Y-%m-%dT%H:%M:%S'
json.id mission.id
json.title mission.title
json.start mission.start.strftime(date_format)
json.end mission.end.strftime(date_format)
json.edit_url edit_mission_path(mission)
end
events = json.array! @events do |event|
date_format = '%Y-%m-%dT%H:%M:%S'
json.id event.id
json.title event.title
json.start event.start.strftime(date_format)
json.end event.end.strftime(date_format)
json.edit_url edit_event_path(event)
end
events + missions
Обратите внимание, что дополнение по-прежнему происходит внизу.IMO, преобразования лучше оставить помощникам и действиям контроллера, тогда как jbuilder как бы смешивает их с представлениями, которые просто запутывают.jbuilder должен в основном использоваться для рендеринга конкретного JSON.Не для того, чтобы мутировать это, как мы здесь делаем.