Ruby on rails Ruby On Rails FullCalendar事件拖放不保存
我正在开发一个新的RubyonRails应用程序,并使用FullCalendar进行日历管理。我有一系列称为“活动”的外部事件,我希望能够在拖动列并将它们放入日历时更新列Ruby on rails Ruby On Rails FullCalendar事件拖放不保存,ruby-on-rails,ruby,coffeescript,fullcalendar,Ruby On Rails,Ruby,Coffeescript,Fullcalendar,我正在开发一个新的RubyonRails应用程序,并使用FullCalendar进行日历管理。我有一系列称为“活动”的外部事件,我希望能够在拖动列并将它们放入日历时更新列在处开始和在处结束。我在这里阻塞,当我删除活动时,它不会更新我的值 这是我的活动/index.html.slim ul#external-events -@activities.each do |activity| li.fc-event data-ac-id="#{activity.id}" =activity
在
处开始和在
处结束。我在这里阻塞,当我删除活动时,它不会更新我的值
这是我的活动/index.html.slim
ul#external-events
-@activities.each do |activity|
li.fc-event data-ac-id="#{activity.id}"
=activity.title
#calendar_now
我的咖啡脚本文件
$(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();
$(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();
我的活动控制器
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
类活动控制器
我在我的应用程序中使用了较旧版本的FullCalendar,因此这可能不是绝对正确的,但以下是一些建议:
update\u活动
控制器操作应称为update
,并且应为put
而不是post
类型:“post”
应该是类型:“put”
drop:(date)->
函数从未调用过eventDrop:(event、dayDelta、minuteDelta、allDay、revertFunc)->
函数看起来有误。签名为函数(event、delta、revertFunc、jsEvent、ui、view){}
。三角洲是一个物体数据:id:event.id
应该是数据:id:event.id开始:event.start
可能的解决方案 这样做效果很好。多亏了约瑟夫 我的更新文件 咖啡脚本文件
$(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();
$(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:无法读取未定义的属性“\u calendar”,这是因为我在数组中呈现json。。。但是@activities已经是一个数组了
无论如何,谢谢:)谢谢你的回答JosephL:)我做了更改,但我认为3)是主要问题,因为当我删除控制台中的活动时,我得到了未捕获的类型错误:无法读取未定义的属性“\u calendar”