AngularJS向API发送nil参数

时间:2016-02-17 21:09:04

标签: ruby-on-rails ruby angularjs api

我使用Ruby on Rails创建了一个基本API。每当我尝试从AngularJS中的表单发送数据时,我都会在Rails服务器中收到此消息:

group_child = Groups.objects.get(subgroup = kwargs["group_id"])
            if group_child is None:
                group = get_object_or_404(Groups, group = kwargs["group_id"])
                group.logic_delete()
                messages.success(request, "Deleted successfull")
            else:
                messages.error(request, "It has elements asociated")

因此,它在数据库中创建空记录。

这是AngularJS中用于发送数据的控制器:

Parameters: {"{\"content\":\"message\"}"=>nil}

2 个答案:

答案 0 :(得分:3)

您需要在以x-www-form-urlencoded

发送时序列化数据

从文档中复制的示例

.controller(function($http, $httpParamSerializerJQLike) {
  //...

  $http({
    url: myUrl,
    method: 'POST',
    data: $httpParamSerializerJQLike(myData),
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  });

});

或者使用$http的默认值,它将请求正文中的JSON发送为application/json

$http.post(myurl, data).then(...;

答案 1 :(得分:2)

更改此行:

headers : {'Content-Type': 'application/x-www-form-urlencoded'} 

为:

headers : {'Content-Type': 'application/json'} 

如果它不是这样的话,还要对Json进行编码:

  data    :  angular.toJson($scope.message), //forms user object

这样您就可以将正确的JSON格式数据发送到API,确保您的API接受Json编码数据以防万一。