在 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 参数实际上是一个对象。
我有一个 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 参数实际上是一个对象。