Устранение неполадок ESPN API в Rails

В моем приложении rails у меня есть рабочий метод для захвата заголовков ESPN через их API. Но, когда я пытаюсь повторить это, чтобы захватить всех игроков НФЛ, метод терпит неудачу.

Вот метод заголовка, который работает через IRB, когда я запускаю Headline.all в IRB, он прекрасно работает.

MODEL (headline.rb)
class Headline
  include HTTParty
  base_uri 'http://api.espn.com/v1/sports'

  def self.all
    response = Headline.get('/news/headlines',
      :query => { :apikey => 'my_api_key' })
    response["headlines"]
  end
end

CONTROLLER (headlines_controller.rb)
class HeadlinesController < ApplicationController
  def index
    @headlines = Headline.all
  end
end

Вот почти идентичный код для игроков НФЛ, и он возвращает "ноль" через IRB. Есть идеи почему?

MODEL (athlete.rb)
class Athlete
  include HTTParty
  base_uri 'http://api.espn.com/v1/sports'

  def self.all
    response = Athlete.get('/football/nfl/athletes',
      :query => { :apikey => 'my_api_key_from_espn' })
    response["athletes"]
  end
end

CONTROLLER (athletes_controller.rb)
class AthletesController < ApplicationController
  def index
    @athletes = Athlete.all
  end
end

Обновление: я должен прокомментировать, что я могу успешно выполнить запрос GET через браузер (и увидеть результаты) через... http://api.espn.com/v1/sports/football/nfl/athletes/?apikey=my_api_key_from_espn

Благодарю. Это мой первый пост в Stackru, так что откройте для обратной связи подход / формат моего вопроса.

1 ответ

Решение

Я получил это работает, и вот мой пересмотренный синтаксис метода для Athlete.all. По сути, массив ответов API спортсменов должен быть немного глубже, чем заголовки API.

class Athlete
 include HTTParty
 base_uri 'http://api.espn.com/v1/sports'

  def self.all
    response = Athlete.get('/football/nfl/athletes',
      :query => { :apikey => 'my_api_key_from_espn' })
    response['sports'].first['leagues'].first['athletes']
  end
end

Для примера, вот мой синтаксис app/views/athletes/index.html.erb:

<ul id="athletes">
  <% @athletes.each do |item| %>
    <li class="item"><%= link_to item["displayName"], item["links"]["web"]["athletes"]["href"] %></li>
  <% end %>
</ul>

(Отдельное спасибо @ivanoats и, конечно, @deefour за это.)

Другие вопросы по тегам