【发布时间】:2014-05-27 22:59:38
【问题描述】:
我有一个用作 api 的 rails 应用程序,这里是我的控制器:
class CarController < ApplicationController
def create
@car = Car.new(params[:car])
if @car.save
render json: @car, status: :created, location: @car
else
render json: @car.errors, status: :unprocessable_entity
end
end
end
我想从我的 Angular 应用程序中“调用”这个 create 函数,这里是我的 Angular 工厂
angular_app.factory('api', function($http) {
$http.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content');
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
return {
//car looks like {owner:'Andres', year:'2014', ....} with every field of Car model
SaveCar: function(car) {
return $http.post('/car/', {car:car}).then(function(result) {
return result;
})
}
}
});
问题是在我的创建汽车功能中,我得到了这样的结果:
{"{\"car\":{\"owner\":\"andres\",\"year\":\"2014\",....}}"=>nil, "action"=>"create", "controller"=>"car"}
只是一个字符串,它应该是:
{"car" => {"owner"=>"andres", "year":"2014", ....}, "action"=>"create", "controller"=>"task"}
我的错误是什么?我尝试使用JSON.parse,但没有成功。
【问题讨论】:
-
可能是强参数的问题。所以不要使用
params[:car],而是使用params.require(:car).permit!。但在这种情况下它会引发另一个错误。一切似乎都很好。除非没有此请求的路由。 -
@zishe 试过了,得到了
ActionController::ParameterMissing (param is missing or the value is empty: car): -
也许角度部分的
car是一个字符串,而不是对象。记录下来。 -
字符串?我创建如下:
var car = {owner:"Andres", year:"2014", ....} -
@zishe 知道了,感谢您的帮助,如果您找到更好的方法,请回答。
标签: javascript ruby-on-rails ruby angularjs