5

Sinatra 的本地变量到底是什么,在模板中使用它们与在实例变量中使用它们有什么区别?这就是我所说的当地人的意思:

erb :template, :locals => {:variable => 'value'}

编辑:

在实现方面,实例变量和局部变量之间有什么区别,使用其中一个有什么好处?

4

1 回答 1

5

来自 Sinatra 的介绍

模板在与路由处理程序相同的上下文中进行评估。路由处理程序中设置的实例变量可以通过模板直接访问:

get '/:id' do
  @foo = Foo.find(params[:id])
  haml '%h1= @foo.name'
end

或者,指定局部变量的显式哈希:

get '/:id' do
  foo = Foo.find(params[:id])
  haml '%h1= bar.name', :locals => { :bar => foo }
end

这通常在将模板呈现为其他模板中的部分时使用。

对于某些模板(在本例中为 Radius):

由于您不能直接从 Radius 模板调用 Ruby 方法,因此您几乎总是希望将本地参数传递给它。

于 2013-06-10T08:29:57.557 回答