When you use PATCH request in angular-resource, the header's Content-Type will be set to 'application/xml', I assume that your backend only respond to json, and that is why you are getting the error. You will need to manually set it to 'application/json'.
One way to do this in the stable version is to use $httpProvider to set the default header
$httpProvider.defaults.headers.common["Content-Type"] = 'application/json'
In unstable version 1.1.1+ you can set it directly in $resource, I have not tried this but it is mentioned here: https://groups.google.com/forum/#!msg/angular/33kV8fjFcME/0f0y2mL2DBgJ
$resource '/users/:id',
{ id: '@id' }
update:
method: 'PATCH'
headers: { 'Content-Type': 'application/json' }