在我的应用程序中,我有以下两条路线
get '/' do
...
haml :home
end
和
get '/:id' do
@variable = Something.get(params[:id])
somethingelse = @variable.some_method
...
haml :show
end
如果我使用执行我的应用程序shotgun
并访问 localhost:9393(shotgun 的默认地址和端口),一切正常,即日志中不显示错误消息
如果我用通常的方式运行服务器(也安装了瘦服务器)ruby app.rb
并访问 localhost:4567,那么它会抱怨 NilClass 没有方法“ some_method
”...好像第二条路由后面跟着空字符串 as id
。
在 Sinatra 文档中,据说路由是按顺序调用的,因此它甚至不应该遇到第二个。我错了吗?
作为测试,我将第二条路线更改为'/:id/show'
,不再有错误。
在这两种情况下(我的意思是使用霰弹枪和普通服务器),网站都完美呈现,即/
视图中正确的是 home.haml 而不是 show.haml。所以错误只存在于日志文件中。说实话,@variable.some_method
直接在视图中调用,在浏览时/
我从/show.haml
.
做什么?为了不再遇到此错误,我应该做些什么吗?我应该明目张胆地忽略它吗?
编辑:代码的输出和相关部分可以在这里找到:https ://gist.github.com/4585374