如何将路由处理程序中所需的文件中定义的实例变量放入模板的上下文中?

时间:2011-10-25 21:36:49

标签: ruby templates sinatra web-frameworks

基本上我有一个文件,foo.rb在该文件中,我定义了@bar。然后在我的app.rb我有类似

的东西
get '/' do
  load 'foo.rb'
  haml :index
end

并在index.haml我尝试使用@bar,但@bar nil 。 =(

有办法做到这一点吗?基本上,我想将代码分解为单独的文件并在每个路由处理程序中加载它们。

1 个答案:

答案 0 :(得分:0)

我认为,您可以使用“帮助程序”为您提供一种分离业务逻辑的好方法。在你的情况下,它将是这样的:

**** foo.rb ****
helpers do
  def bar
    "Hello, world!"
  end
end

**** app.rb ****
require 'sinatra'
require 'path/to/your/foo.rb'

get '/' do
  bar
end

该片段将呈现为带有“Hello,world”行的html页面。