2016-08-27 6 views
1

私はsinatraの私のポストサービスリソースの関数にparamsのハッシュを渡そうとしています。下記を参照してください。Sinatraが関数へのハッシュとしてパラメータを渡す

post '/service' do 
    create_itop_entry(params) 
end 

そして、私の機能私はのparamsを渡しています....

ハッシュ値である
def create_itop_entry(fields) 
params = {'json_data' => '{"operation":"core/create", 
          "comment":"Service created on ' + Time.now.strftime("%Y-%m-%d") + '", 
          "class":"Service", 
          "fields":{ 
           org_id: "'+ fields["org_id"] +'", 
           status: "' + fields["status"] + '", 
           stack_type: "' + fields["stack_type"] + '", 
           version: "' + fields["version"] + '", 
           hostname: "' + fields["hostname"] + '", 
           longitude: "' + fields["longitude"] + '", 
           latitude: "' + fields["latitude"] + '", 
           abbreviation_code: "' + fields["abbreviation_code"] + '", 
           name: "' + fields["name"] + '", 
           email: "' + fields["email"] + '", 
           apn: "' + fields["apn"] + '" 
          }, 
          "output_fields":"id, friendlyname" 
          }' 
     } 
end 

関数呼び出しは以下の私の予想結果を返します...私のjson_dataに追加されています。私がsinatraからparams.inspectを出力すると、以下のものと同じハッシュが返されます。

puts create_itop_entry({"org_id"=>"4", "status"=>"pilot", "stack_type"=>"single", "version"=>"2.9.29", "hostname"=>"test.pilot.net", "longitude"=>"-81.20", "latitude"=>"41.20", "abbreviation_code"=>"zzz", "name"=>"Test-Test", "email"=>"[email protected]", "apn"=>"TestRange1 10.36.192.80-28,TestRange2 10.131.201.0-24"}) 

私は取得していますエラーが

[2016-08-27 17:28:03] DEBUG WEBrick::HTTPServlet::FileHandler is mounted on  /. 
[2016-08-27 17:28:03] DEBUG Rack::Handler::WEBrick is mounted on /. 
[2016-08-27 17:28:03] INFO WEBrick::HTTPServer#start: pid=32343 port=4567 
[2016-08-27 17:28:14] DEBUG accept: ::1:58203 
[2016-08-27 17:28:14] DEBUG Rack::Handler::WEBrick is invoked. 
[2016-08-27 17:28:15] ERROR TypeError: no implicit conversion of Array into String 
    /home/geapp/.gem/ruby/2.0/gems/rack-1.6.4/lib/rack/handler/webrick.rb:113:in `block in service' 
    /home/geapp/.gem/ruby/2.0/gems/rack-1.6.4/lib/rack/handler/webrick.rb:112:in `each' 
    /home/geapp/.gem/ruby/2.0/gems/rack-1.6.4/lib/rack/handler/webrick.rb:112:in `service' 
    /usr/share/ruby/2.0/webrick/httpserver.rb:138:in `service' 
    /usr/share/ruby/2.0/webrick/httpserver.rb:94:in `run' 
    /usr/share/ruby/2.0/webrick/server.rb:295:in `block in start_thread' 
localhost - - [27/Aug/2016:17:28:14 UTC] "POST /service HTTP/1.1" 500 338 

答えて

4

あなたの機能...私は単純な何かが足りないかもしれないので、私は/シナトラをルビーに新しいです...文字列への配列のない暗黙的な変換ではありませんハッシュを返します。これはの有効なタイプではありません。ハッシュを返すと、Webサーバーが混乱し、このエラーが発生します。

おそらくto_jsonを呼び出して結果の文字列を返すことを意味しますか?

+0

これは私の問題で、 'to_json'ビットは私のためにはうまくいかず、問題は私がハッシュを返すことでした。有効なリターンタイプのリンクをありがとう! – tjmair

関連する問題