Sinatra当地人与实例变量

Ces*_*roa 5 ruby sinatra

究竟什么是Sinatra的本地人,在模板中使用它们与实例变量之间有什么区别?这是我对当地人的意思:

erb :template, :locals => {:variable => 'value'}
Run Code Online (Sandbox Code Playgroud)

编辑:

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

Yev*_*yev 5

来自Sinatra的介绍:

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

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

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

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

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

对于某些模板(在这种情况下为Radius):

由于您无法直接从Radius模板调用Ruby方法,因此您几乎总是希望将locals传递给它.