【发布时间】:2013-06-11 05:57:04
【问题描述】:
在我的 rails 应用程序中,我有一个通过 API 捕获 ESPN 头条新闻的工作方法。但是,当我尝试复制此方法以捕获所有 NFL 球员时,该方法失败了。
这是通过 IRB 工作的标题方法,当我在 IRB 中运行 Headline.all 时效果很好。
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
这是 NFL 球员的几乎相同的代码,它通过 IRB 返回“nil”。任何想法为什么?
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
谢谢。这是我在 StackOverflow 上的第一篇文章,因此欢迎对我的问题的方法/格式提供反馈。
【问题讨论】:
-
能看到控制器动作的相关代码吗?你在
Athlete.all方法中调试过response吗?它有您要查找的"athletes"密钥吗? -
嗨@Deefour - 你能给我一些关于如何调试响应的基本指示吗?我应该评论说我可以通过浏览器成功运行 GET 请求(并查看结果)...
-
将
Rails.logger.debug response.to_s之类的内容放入方法中并检查您的应用程序日志。或者,获取类似better_errors 的内容并在GET请求之后抛出异常。better_errors提供了一个 REPL,您可以使用它来检查引发异常的应用程序的当前状态。最后,您可以尝试pry 并在GET请求之后放置binding.pry行并以这种方式进行检查。 -
谢谢 - 这有帮助。将排除故障并回复。
标签: ruby-on-rails api methods espn