2015-10-29 3 views
0

Я работаю над новым рубином на приложении rails, и я использую FullCalendar для управления календарем. У меня есть ряд внешних событий, называемых действиями, и я хочу иметь возможность обновлять столбцы starts_at и ends_at, когда я перетаскиваю их и переношу их в Календарь. Я заблокирован здесь, и когда я отбрасываю активность, он не обновляет мои значения.Ruby On Rails FullCalendar События перетаскивания не сохраняются

Вот моя деятельность/index.html.slim

ul#external-events 
[email protected] do |activity| 
    li.fc-event data-ac-id="#{activity.id}" 
    =activity.title 

#calendar_now 

Мой CoffeeScript файл

$(document).ready -> 
    $('#calendar_now').fullCalendar 
    droppable: true, 
    editable: true, 
    header: 
     left: '', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    eventsSources: '/activities', 
    eventDrop: (event, dayDelta, minuteDelta, allDay, revertFunc) -> 
     $.ajax 
     url: '/activities/update_activities' 
     type: 'post' 
     data: id: event.id 
     dataType: 'json' 
     success: (response) -> 
      console.log 'response' 
    drop: (date) -> 
     id_ac = $(this).data('ac') 
     $.ajax 
     url: '/activities/update_activities' 
     type: 'post' 
     data: start: date, id: id_ac 
     dataType: 'json' 
     success: (response) -> 
      console.log 'response' 
     $(this).remove(); 

Моя деятельность контроллера

class ActivitiesController < ApplicationController 
    def index 
    @activities = Activity.where(user_id: current_user) 
    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: ([@activities]) } 
    end 
    end 

    def update_activities 
    @activity = Activity.find(params[:id]) 
    @activity.starts_at = params[:start] 
    @activity.save 

    end 
end 

ответ

0

Я использовал старую версию FullCalendar в мое приложение, так что это может быть не совсем правильно, но вот некоторые предложения:

  1. Действие update_activities контроллер должен быть назван update и должны быть put не post.
  2. Вы обновляете активность, не создавая новую, поэтому type: 'post' должен быть type: 'put'.
  3. Похоже, что ваша функция drop: (date) -> никогда не называется.
  4. Если вы используете последнюю версию FullCalendar, то функция eventDrop: (event, dayDelta, minuteDelta, allDay, revertFunc) -> выглядит неправильно. У current documentation есть подпись: function(event, delta, revertFunc, jsEvent, ui, view) { }. И дельта - объект duration.
  5. Данные отсутствуют события начинают так data: id: event.id должны быть data: id: event.id start: event.start
+0

Спасибо за ваш ответ JosephL :) Я сделал изменения, но я думаю, 3) является основной проблемой, так как, когда я бросаю свою деятельность, я получаю в моей консоли Uncaught TypeError: Не удается прочитать свойство «_calendar» неопределенного – Lawrobi

0

Возможное решение

Он отлично работает таким образом. Благодаря Джозефу Л.

Мои обновленные файлы

CoffeeScript файл

$(document).ready -> 
    $('#calendar_now').fullCalendar 
    droppable: true, 
    editable: true, 
    header: 
     left: '', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    eventSources: [{ 
     url: '/activities', 
    }], 
    eventDrop: (event, delta) -> 
     $.ajax 
     url: '/activities/update' 
     type: 'put' 
     data: id_ac_data: event.id, start: event.start.format() 
     dataType: 'json' 
     success: (response) -> 
      console.log 'response' 
    drop: (start) -> 
     id_ac = $('#ac_id').data('ac') 
     $.ajax 
     url: '/activities/update' 
     data: 
      start: start.format() 
      id_ac_data: id_ac 
     type: 'put' 
     dataType: 'json' 
     success: (response) -> 
      console.log 'response' 
     $(this).remove(); 

контроллер указательным деятельности

respond_to do |format| 
format.html # index.html.erb 
format.json { render json: @activities } 
end 

неперехваченного TypeError: Не удается прочитать свойство '_calendar' неопределенных исходит из того, я оказывающего json в массиве ... но @activities уже был массивом

все равно спасибо :)

Смежные вопросы