2012-03-23 7 views
0

길 찾기를 위해 bing api에 출발지와 목적지 좌표를 게시하려고합니다. 하지만 데이터를 보낼 수 없습니다.빙 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 어레이의 내용을 인쇄하십시오. 값 중 하나는 확실하게 nil이며, 그 이유는 CGI.escape(v)이 예외를 throw합니다. 당신이 nil 값을 고정 할 수있는 경우

는 해결 방법으로 다음과 같은 줄을 사용하십시오 저를 도와 주셔서

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

감사합니다 ... 빙 키가 비어을 ... – nightf0x

관련 문제