【发布时间】:2014-08-14 09:55:14
【问题描述】:
我有一个类App 继承自Sinatra::Base 和一个模块AppHelper,我在App 中与helpers AppHelper 一起使用。如何从AppHelper 访问App 中定义的设置?
下面是一些示例代码:
# app.rb
require "sinatra"
require "./helper"
class App < Sinatra::Base
set :message, "Hello, World!"
helpers AppHelper
get "/" do
helper_method
end
end
if __FILE__ == $0
App.run! port: 4567
end
这是助手:
# helper.rb
module AppHelper
def helper_method
settings.message
end
end
不幸的是,这会产生
NoMethodError at /
undefined method `message' for App:Class
如何从我的帮助模块访问设置?
【问题讨论】:
-
您的代码对我来说没问题,我认为
set和helpers调用的顺序不是问题所在。此外,您应该要求sinatra/base而不是普通的sinatra。 -
我想我的例子很垃圾......我应该清理我的真实代码并发布它而不是一些虚构的示例代码。我不想删除这个问题,因为我已经接受了答案。
-
还将 require 'sinatra/base' 添加到帮助模块。 sitepoint.com/using-sinatra-helpers-to-clean-up-your-code