【问题标题】:Why is "url_for" undefined in my application?为什么我的应用程序中未定义“url_for”?
【发布时间】:2011-08-06 13:57:17
【问题描述】:

我正在尝试使用 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

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

【问题讨论】:

    标签: ruby sinatra url-for


    【解决方案1】:

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

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

    【讨论】:

    • 我尝试了一些关于明确包含助手的事情。还是没有骰子。 (有关详细信息,请参阅上面的编辑)。感谢您的想法!
    • 我不知道我是如何让它工作的,但我做到了,而且我正在使用你给我看的线路,所以你得到了答案。 ;) 我仍然坚持尝试获取我的静态资产,但我会就此发布另一个问题。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多