【问题标题】:Ruby on rails: Call create object function from angular.js appRuby on rails:从 angular.js 应用程序调用创建对象函数
【发布时间】: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


【解决方案1】:

知道了:

def create
    @car = Car.new(JSON.parse(request.body.read)['car'])

    if @car.save
        render json: @car, status: :created, location: @car
    else
        render json: @car.errors, status: :unprocessable_entity
    end
end

它有效,但我真的不知道request.body.read 做了什么。随意编辑和解释(记住,我从 ruby​​ 开始)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多