我真的无法找到解决方案。我试图访问游戏API以填充我手动插入的游戏的平台(PS3 Xbox)信息。关于我所拥有的游戏的所有信息(比如游戏的名称)都是强有力的参数。所以我使用我手动插入的名称来使用API获取平台。
当我尝试第一个例子时,事情很顺利,但第二个例子,我没有得到服务器的回答。当我提交到create action时没有任何反应,而不是服务器日志上的一行: - /
示例之间的唯一区别是我保存游戏名称以进行API请求的方式。我使用Nokogiri Gem来解析API的XML,代码看起来很好。
你能帮助我吗?
谢谢,
示例1(运作良好):
def create
@game = Game.new(game_params)
firstUrl = "http://thegamesdb.net/api/GetGamesList.php?name=sonic"
# I'm hardcoding a game just for debug
gameList = Nokogiri::XML(open(firstUrl))
gameApiId = gameList.css("Game id").first.text
secondUrl = "http://thegamesdb.net/api/GetGame.php?id=" + gameApiId
gameInformation = Nokogiri::XML(open(secondUrl))
@game.platform = gameInformation.xpath("//Game//Platform").text
if @game.save
redirect_to @game, notice: 'Game was successfully created.'
else
render :new
end
end
private
def game_params
params.require(:game).permit(:name, :publisher, :year, :description, :image, levels_attributes: [:id, :name, :sort_order, :_destroy])
end
示例2(服务器无响应)
def create
@game = Game.new(game_params)
firstUrl = "http://thegamesdb.net/api/GetGamesList.php?name=" + @game.name.gsub(/\s+/, "")
# I'm hardcoding a game just for debug
gameList = Nokogiri::XML(open(firstUrl))
gameApiId = gameList.css("Game id").first.text
secondUrl = "http://thegamesdb.net/api/GetGame.php?id=" + gameApiId
gameInformation = Nokogiri::XML(open(secondUrl))
@game.platform = gameInformation.xpath("//Game//Platform").text
if @game.save
redirect_to @game, notice: 'Game was successfully created.'
else
render :new
end
end
private
def game_params
params.require(:game).permit(:name, :publisher, :year, :description, :image, levels_attributes: [:id, :name, :sort_order, :_destroy])
end
答案 0 :(得分:0)
总之,区别在于:
firstUrl = "http://thegamesdb.net/api/GetGamesList.php?name=" + @game.name.gsub(/\s+/, "")
您将在此处获得有关如何debug
此问题的提示。问题是因为您正在ping第三方API,我们几乎没有关于返回的数据意味着什么的信息,制作任何"解决方案"一个在黑暗中刺伤的案例
-
<强>调试强>
我会做几件事:
- 确保此新链接可访问&amp;返回数据
- 确保其余变量&amp;数据完好无损
- 确保第三方API能够提供您想要的回报
醇>
我怀疑问题与您拨打@game.name.gsub
的方式有关 - 您确认这确实被称为吗?
我刚测试了网址http://thegamesdb.net/api/GetGamesList.php?name=StarFox
并带回了数据。在初步检查时,我怀疑问题的症结在于你对此url