【问题标题】:Problems parsing parameters from Angular post in Rails controller在 Rails 控制器中解析来自 Angular 帖子的参数时出现问题
【发布时间】:2015-04-12 22:47:36
【问题描述】:

我有一个 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 哈希属性。我该如何解决这个问题,以便我的控制器中的控制器工作并打印预期的内容?

【问题讨论】:

    标签: ruby-on-rails json angularjs angular-http


    【解决方案1】:

    在我看来,您的 info 对象并不是真正的对象,而是一串 JSON。

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

    【讨论】:

    • 谢谢,我最终实际上使用了JSON.stringify,但你给了我第一个想法:D
    • 我相信解决方法是将data: info, 更改为data: JSON.stringify(info),
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    相关资源
    最近更新 更多