所以我创建并发布了一个Sinatra应用程序给Heroku而没有任何问题。我甚至用Rackup在本地测试它以确保它的功能正常。在从URL中使用邮政编码后,有一系列API调用到各个地方,但Heroku只是想告诉我服务器错误。
我添加了一个错误页面,试图给我更多描述,但是,它告诉我它不能对#执行`count',我认为这意味着哈希。这是我认为它正在尝试执行的代码......
if weather_doc.root.elements["weather"].children.count > 1
curr_temp = weather_doc.root.elements["weather/current_conditions/temp_f"].attributes["data"]
else
raise error(404, "Not A Valid Zip Code!")
end
如果有人想敲响它,可以通过http://quiet-journey-14.heroku.com/来达到,但是没有多少可以接受。
答案 0 :(得分:1)
Hash
没有count
方法。它有一个length
方法。如果#
确实引用了哈希对象,那么问题是你正在调用一个不存在的方法。
答案 1 :(得分:0)
如果您想查看#背后的内容,请尝试
raise probably_hash.class.to_s
答案 2 :(得分:0)
#
没有引用哈希,它是#<Array:0x2b2080a3e028>
的第一个字符。 <
和>
之间的部分未在浏览器中显示(隐藏标记本身),但在View Source中可见。
你真正的问题与Ruby无关,而是与HTML或XML文档中的导航(通过DOM)有关。你的陈述
weather_doc.root.elements [“weather”]。children.count&gt; 1
导航HTML / XML文档,选择“天气”元素,并(尝试)计算子项。 children
调用的结果没有方法count
。请改用length
。
BTW,您确定该文档包含标记<weather>
吗?因为那是你想要选择的。