为什么我的应用程序中未定义“url_for”?

时间:2011-08-06 13:57:17

标签: ruby sinatra url-for

我正在尝试使用url_for扩展程序,以便我的应用程序可以准确找到我的静态资产(也尝试了静态资产扩展,但它也抱怨同样的问题)。

问题在于:

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

现在,根据url_for README:

,我已经列出了所需的模块
require 'rubygems'
require 'sinatra/base'
require 'data_mapper'
require 'lib/authorization'
require 'pony'
gem 'emk-sinatra-url-for'
require 'sinatra/url_for' 

但是当我尝试调用url_for

时,我仍然得到NoM​​ethodError

关于助手,我尝试过几个不同的事情。首先,我有一个授权扩展的帮助程序块:

helpers do
    include Sinatra::Authorization
end

所以,我认为我可以在那里包含url_for助手:

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

但是这并没有解决问题,所以我只是添加了一行:

 helpers Sinatra::UrlForHelper

之后,初始助手会阻止,但仍无法解决问题。

1 个答案:

答案 0 :(得分:2)

如果您是Sinatra :: Base的子类,则需要明确包含帮助程序:

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