Sinatra的本地人究竟是什么,在模板中使用它们与实例变量之间有什么区别?我的意思是locals:
erb :template, :locals => {:variable => 'value'}
修改
在实现方面,实例和局部变量之间有什么区别,使用其中一个有什么好处?
答案 0 :(得分:5)
来自Sinatra的intro:
模板在与路由处理程序相同的上下文中进行评估。路径处理程序中设置的实例变量可由模板直接访问:
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方法,因此您几乎总是希望将本地文件传递给它。