在我的申请中,我有以下两条路线
get '/' do
...
haml :home
end
Run Code Online (Sandbox Code Playgroud)
和
get '/:id' do
@variable = Something.get(params[:id])
somethingelse = @variable.some_method
...
haml :show
end
Run Code Online (Sandbox Code Playgroud)
如果我使用shotgun并执行我的应用程序并访问localhost:9393(shotgun的默认地址和端口),一切正常,即日志中不显示任何错误消息
如果我使用平常运行服务器(也是瘦的安装)ruby app.rb并访问localhost:4567,那么它会抱怨some_methodNilClass 没有方法" ",好像第二条路由后跟空字符串一样id.
在Sinatra文档中,据说路由是按顺序调用的,所以它甚至不应该遇到第二个.我错了吗?
作为测试,我改变了第二条路线,'/:id/show'并且不再有错误.
在这两种情况下(我的意思是同时使用霰弹枪和普通服务器)网站都是完美呈现的,即在/视图中是正确的home.haml而不是show.haml.因此错误仅出现在日志文件中.要讲的真相,@variable.some_method直接在视图中调用,而在浏览时/我收到了错误/show.haml.
怎么办?有什么我不应该再遇到这个错误吗?我应该公然忽视它吗?
编辑:输出和代码的相关部分可以在这里找到:https://gist.github.com/4585374
显然这是因为Chrome而导致的问题(请参阅https://groups.google.com/forum/?fromgroups=#!topic/nodejs/A415fHudhhM)
Chrome,无论何时没有得到针对favicon.ico的正确回复,都会发送另一个请求,这与我太通用的路由冲突 /:id
将favicon.ico(甚至为空)添加到public项目根目录中的文件夹,修复了这个问题,因为现在chrome在请求favicon时获得200响应.使用firefox从一开始就没有出现此错误的迹象.
| 归档时间: |
|
| 查看次数: |
1300 次 |
| 最近记录: |