在 Rails 控制器中解析来自 Angular post 的参数时出现问题

Problems parsing parameters from Angular post in Rails controller

我有一个 Angular.js 应用程序向 Rails 服务器端点发送 POST 请求,我在传递和读取参数时遇到问题。

这是我发送数据的方式

$scope.submitForm = function(info) {

    $http({
      method: 'POST',
      url: app.apiServerUrl + '/complaints/create',
      data: info,
      headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function(data, status, headers, config) {

      // this callback will be called asynchronously
      // when the response is available
    }).error(function(data, status, headers, config) {
     // called asynchronously if an error occurs
     // or server returns response with an error status.

  });
};

传递的 info 对象是以下形式的对象:{ title: "something", ocurrence_place: "something" }.

在我的控制器 create 操作中,我有这个:

def create
  p params
  p params[:title]
end

但这是打印在日志中的内容

{"{\"title\":\"foo\",\"ocurrence_place\":\"bar\"}"=>nil, "controller"=>"complaints", "action"=>"create"}
nil

因此,如您所见,我无法访问 params 哈希属性。我该如何解决这个问题,以便我的控制器中的控制器正常工作并打印出预期的内容?

在我看来,您的信息对象并不是真正的对象,而是 JSON 的字符串。

尝试将 data: info 更改为 data: JSON.parse(info) 或更正调用 submitForm(info) 的任何内容,以便 info 参数实际上是一个对象。