我正在使用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。不是为了突变它,我们在这里做。