2012-12-18 96 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" 
      ); 
     } 
    ); 
}