невозможно получить данные из Bing API - PullRequest
0 голосов
/ 23 марта 2012

Я пытаюсь опубликовать координаты отправления и назначения в 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 Ответ

1 голос
/ 23 марта 2012

Используйте params.inspect для печати содержимого массива param. Одно из значений, безусловно, nil, поэтому CGI.escape(v) вызывает исключение.

Если вы можете исправить значение nil, используйте следующую строку в качестве обходного пути:

...
}.map {|k,v| "#{k}=#{CGI.escape(v||'')}"}*"&"
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...