在ajax调用上的RoutingError更新fullcalendar事件

时间:2014-11-11 20:04:17

标签: javascript ruby-on-rails ajax fullcalendar

我使用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的约会。

由于

1 个答案:

答案 0 :(得分:0)

将您的ajax请求更改为PUTPATCH将解决您的问题,但我不确定这是否意图。我的意思是:

        $.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,只需传递数据{...}