我使用fullcalendar在我的rails应用程序上显示事件。工作良好。现在我希望事件在数据库中更新拖放操作。为此,我使用eventDrop方法和基于this的ajax调用回答:
eventDrop: function(event, delta, revertFunc) {
update_source = update_prefix + event.user_id + "/appointments/" + event.id;
$.ajax({
type: "POST",
dataType: "script",
url: update_source,
contentType: 'application/json',
data: JSON.stringify({ resource:{start:event.start, end: event.end}, _method:'put' })
}).done(function( msg )
{
alert( "Data Saved: " + msg );
});
}
这是控制器上的更新方法:
def update
@appointment.update(appointment_params)
if @appointment.save
respond_to do |format|
format.js
end
else
render js: "alert('Please include phone number');"
end
end
这些是佣金路线上的路线:
PATCH (/:locale)/companies/:company_id/users/:user_id/appointments/:id(.:format) appointments#update
PUT (/:locale)/companies/:company_id/users/:user_id/appointments/:id(.:format) appointments#update
DELETE (/:locale)/companies/:company_id/users/:user_id/appointments/:id(.:format) appointments#destroy
但是我不断收到以下错误:
ActionController::RoutingError (No route matches [POST] "/es/companies/1/users/50/appointments/140"):
以防万一;实际上,在数据库中存在属于属于公司1的用户50的id 140的约会。
由于
答案 0 :(得分:0)
将您的ajax请求更改为PUT
或PATCH
将解决您的问题,但我不确定这是否意图。我的意思是:
$.ajax({
type: "PATCH",
dataType: "script",
url: update_source,
contentType: 'application/json',
data: { resource:{start:event.start, end: event.end} }
}).done(function( msg )
{
alert( "Data Saved: " + msg );
});
它将调用update
操作。此外,您不需要JSON.stringify
,只需传递数据{...}
。