Fullcalendar JSON许多来源



我正在使用fullcalendar.js,顺便说一句,这真是太神奇了。在这种情况下,我发现了JSON Datas的操纵。我的问题是:我有变量@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

但是,这种解决方案都没有起作用。有什么想法吗?

您只能在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。不是为了突变它,我们在这里做。

相关内容

  • 没有找到相关文章

最新更新