2012-03-23 8 views
0

方向を取得するためにbing apiに出発地と目的地の座標を投稿しようとしています。しかし、私はデータを送信することができません。bing apiからデータを取得できません

def get_info_from_bing(params) 
    base_url="http://dev.virtualearth.net/REST/v1/Routes/" 
    query_params = "?" + { 
      "wayPoint.1" => params[:origin], 
      "waypoint.2" => params[:destination], 
      "dateTime" => params[:time] || Time.now.strftime("%H:%M"), 
      "timeType" => "Arrival", 
      "key" => ENV['BING_KEY'] 
    }.map {|k,v| "#{k}=#{CGI.escape(v)}"}*"&" 
    modes=%w{driving walking transit} 

エラー:

NoMethodError - undefined method `gsub' for nil:NilClass: 
/Users/anirvan/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/cgi/util.rb:7:in `escape' 
/Users/anirvan/codeforamerica-transpochoices-1ccac48/choices.rb:15:in `block in get_info_from_bing' 
/Users/anirvan/codeforamerica-transpochoices-1ccac48/choices.rb:15:in `each' 
/Users/anirvan/codeforamerica-transpochoices-1ccac48/choices.rb:15:in `map' 
/Users/anirvan/codeforamerica-transpochoices-1ccac48/choices.rb:15:in `get_info_from_bing' 
/Users/anirvan/codeforamerica-transpochoices-1ccac48/choices.rb:120:in `block in <top (required)>' 
/Users/anirvan/.rvm/gems/ruby-1.9.2-p318/gems/sinatra-1.3.1/lib/sinatra/base.rb:1212:in `call' 
/Users/anirvan/.rvm/gems/ruby-1.9.2-p318/gems/sinatra-1.3.1/lib/sinatra/base.rb:1212:in `block in compile!' 
/Users/anirvan/.rvm/gems/ruby-1.9.2-p318/gems/sinatra-1.3.1/lib/sinatra/base.rb:772:in `[]' 
/Users/anirvan/.rvm/gems/ruby-1.9.2-p318/gems/sinatra-1.3.1/lib/sinatra/base.rb:772:in `block (3 levels) in route!' 

私はシナトラやルビーに新しいです。誰が問題が何であるか知っていますか?

答えて

1

を使用して、paramアレイの内容を印刷します。値の1つは確かにnilで、その理由はCGI.escape(v)が例外をスローします。

あなたは回避策として次の行を使用し、nil値を修正することができた場合:私を助けるため

... 
}.map {|k,v| "#{k}=#{CGI.escape(v||'')}"}*"&" 
... 
+0

おかげで...ビングキーが空でしたが... – nightf0x

関連する問題