Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用嵌套参数从node js到ruby on rails的http post_Ruby On Rails_Json_Node.js_Api - Fatal编程技术网

Ruby on rails 使用嵌套参数从node js到ruby on rails的http post

Ruby on rails 使用嵌套参数从node js到ruby on rails的http post,ruby-on-rails,json,node.js,api,Ruby On Rails,Json,Node.js,Api,我正在尝试从NodeJS应用程序向Rails应用程序发送POST请求 以下是nodejs代码: var http = require('http'); var photoRequest = { photo_request: { bw_quantity: 0, color_quantity: 1 } }; var photoRequestStr = JSON.stringify(photoRequest); var options = { ho

我正在尝试从NodeJS应用程序向Rails应用程序发送POST请求

以下是nodejs代码:

var http = require('http');
var photoRequest = {
    photo_request: {
      bw_quantity: 0,
      color_quantity: 1
    }
  };

var photoRequestStr = JSON.stringify(photoRequest);
var options = {
    host: 'localhost',
    path: '/api/v1/photo_requests',
    port: '3000',
    method: 'POST',
    headers: {
      'Content-Length': photoRequestStr.length,
      'Content-Type': 'application/x-www-form-urlencoded'
    }
};
var str = '';

http
  .request(options, function(res) {
    res.setEncoding('utf8');
    res.on('data', function(data) {
      str += data;
    });

    res.on('end', function() {
      console.log(str);
    })

    res.on('error', function(error) {
      console.log(error);
    })
  })
  .end(photoRequestStr);
这是rails代码

def safe_params
    p 'PARAMS:'
    p params.inspect
    p 'END PARAMS'
    params.require(:photo_request).permit!
end

def create
   @request = PhotoRequest.new(safe_params)

   if @request.save
       render json: { :message => 'Success!'}, status: :ok, success: true
   end
end
我得到一个错误:

Started POST "/api/v1/photo_requests" for 127.0.0.1 at 2014-10-27 11:36:00 +0800
Processing by Api::V1::PhotoRequestsController#create as HTML
  Parameters: {"{\"photo_request\":{\"bw_quantity\":0,\"color_quantity\":1}}"=>nil}
  User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."auth_token" = 'xxxxxxxxxxxxxxxxx' ORDER BY "users"."id" ASC LIMIT 1
   (0.3ms)  SELECT COUNT(*) FROM "photo_requests" WHERE "photo_requests"."allocation_status" IN (
'no', 'partial')
"PARAMS:"
"{\"{\\\"photo_request\\\":{\\\"bw_quantity\\\":0,\\\"color_quantity\\\":1}}\"=>nil, \"action\"=>\"
create\", \"controller\"=>\"api/v1/photo_requests\"}"
"END PARAMS"
Completed 400 Bad Request in 5ms

ActionController::ParameterMissing (param not found: photo_request):

知道如何让rails接受来自nodejs的参数吗?谢谢

将nodeJS头代码改为
'Content-Type':'application/json'
,而不是
'Content-Type':'application/x-www-form-urlencoded'
,这样做很有效

在安全参数方法中执行此
params.require('photo\u request')
时会发生什么