2012-12-18 59 views
1

我在Rails应用程序中使用arshaw.com/fullcalendar/。 这真的很好!Rails Fullcalendar整天拖动不起作用

我使用eventDrop来更新事件表,当用户从一天移动(拖动)一个事件到另一个。这适用于拖动具有开始和结束时间的事件。但是,当您拖动allday事件时,它不会更新表格。

这是我的表更新代码:

eventDrop: (event, dayDelta, minuteDelta, allDay, revertFunc) -> 
    updateEvent(event); 

    eventResize: (event, dayDelta, minuteDelta, revertFunc) -> 
    updateEvent(event); 


updateEvent = (the_event) -> 
    $.update "/events/" + the_event.id, 
    event: 
     title: the_event.title, 
     starts_at: "" + the_event.start, 
     ends_at: "" + the_event.end, 
     description: the_event.description 

任何想法?

谢谢!

回答

0

我解决这个问题的简单方法是用一点破解(我不喜欢黑客,但我认为这是需要的)。

我做的是什么,在阿迪事件创作,我想补充结束时间为该事件编程(1H开始后),确保所有事件总是有结束时间:

select: function (start, end, allDay, jsEvent, view) 
    { 
     var title = prompt('event title:'); 

     if (title) 
     { 
      var allDay = allDay ? true : false; 
      if (allDay) 
      { // this ensures that allDay tasks have end time if they're to be changed to non allDay tasks 
       end.setHours(end.getHours() + 1); 
      } 

      createEvent(
      { 
       title: title, 
       start: start, 
       end: end, 
       allDay: allDay 
      }); 
     } 
     $calendar.fullCalendar('unselect'); 
    }, 

这里的createEvent功能:

function createEvent(event) 
{ 
    $spinner.show(); 
    $.create(
     "/tasks", 
     { 
      "task": 
      { 
       name: event.title, 
       starts_at: "" + event.start, 
       ends_at: "" + event.end, 
       all_day: event.allDay 
      } 
     }, 
     function (response) 
     { 
      $spinner.hide(); 
      var id = response.id; 
      $calendar.fullCalendar('renderEvent', 
      { 
       id: id, 
       title: event.title, 
       start: event.start, 
       end: event.end, 
       allDay: event.allDay ? true : false 
      }, 
      true // make the event "stick" 
      ); 
     } 
    ); 
}