1

我正在尝试使用 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 时,我仍然收到 NoMethodError

关于助手,我尝试了几种不同的方法。首先,我有一个授权扩展的助手块:

helpers do
    include Sinatra::Authorization
end

所以,我想我可以在其中包含 url_for 助手:

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

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

 helpers Sinatra::UrlForHelper

在那之后,最初的助手确实阻止了,但仍然没有解决方案。

4

1 回答 1

1

如果你是 Sinatra::Base 的子类,你需要明确地包含帮助器:

class Foobar < Sinatra::Base
  helpers Sinatra::UrlForHelper
end
于 2011-08-06T14:25:24.583 回答