Полный календарь JSON много источников - PullRequest
0 голосов
/ 21 марта 2019

Я использую FullCalendar.js, что удивительно, кстати. В этом случае я обнаружил манипулирование данными JSON. Моя проблема заключается в следующем: У меня есть переменные @missions и @events. Но я не могу позвонить и сделать оба в моем календаре Может ли кто-нибудь помочь мне в этом?

что я уже пробовал

1) добавить вторую строку с хорошим запросом, как это

$('#calendar').fullCalendar({
  events: '/missions.json',
  events: '/events.json'
})

2) Или добавьте второй цикл в мой файл json, например:

Но ни одно из этих решений не работает. Есть идеи?

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

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

Но ни одно из этих решений не работает. Есть идеи?

1 Ответ

1 голос
/ 21 марта 2019

В объектах 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.Не для того, чтобы мутировать это, как мы здесь делаем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...