2011-08-06 32 views
2

我试图使用url_for扩展名,所以我的应用程序可以准确地找到我的静态资产(也尝试过静态资产扩展,但它也抱怨同样的问题)。为什么我的应用程序中未定义“url_for”?

问题是这样的:

undefined method `url_for' for Sinatra::Raffler:Class (NoMethodError) 

现在,我已经得到了需要的模块上市,按照该url_for自述:

require 'rubygems' 
require 'sinatra/base' 
require 'data_mapper' 
require 'lib/authorization' 
require 'pony' 
gem 'emk-sinatra-url-for' 
require 'sinatra/url_for' 

但我仍然得到NoM​​ethodError当我尝试打电话给url_for

我已经尝试了几个关于助手的不同的事情。首先,我有一个授权扩展一个助手块:

helpers do 
    include Sinatra::Authorization 
end 

所以,我想我可以包括在那里url_for助手:

helpers do 
    include Sinatra::Authorization 
    include Sinatra::UrlForHelper 
end 

但是这并没有解决问题,所以我刚刚添加的行:

helpers Sinatra::UrlForHelper 

之后,初始助手做阻止,但仍然没有解决。

回答

2

如果你继承西纳特拉:: Base的,你需要包括助手明确:

class Foobar < Sinatra::Base 
    helpers Sinatra::UrlForHelper 
end 
+0

我试了几件事情参考包括佣工明确。仍然没有骰子。 (请参阅上面的编辑了解详情)。谢谢你的想法! – YuKagi

+0

我不知道我是如何设法让它起作用的,但我做到了,而且我正在使用您向我展示的线条,因此您可以得到答案。 ;)我仍然坚持试图获得我的静态资产,但我会发布另一个问题。再次感谢! – YuKagi

相关问题