Ruby Sinatra局部变量与实例变量
Sinatra的局部变量到底是什么,在模板中使用它们与在实例变量中使用它们有什么区别?我的意思是: 编辑: 就实现而言,实例变量和局部变量之间有什么区别,使用一个变量比使用另一个变量有什么好处?来自Sinatra的: 模板在与路由处理程序相同的上下文中进行计算。路由处理程序中设置的实例变量可由模板直接访问:Ruby Sinatra局部变量与实例变量,ruby,sinatra,Ruby,Sinatra,Sinatra的局部变量到底是什么,在模板中使用它们与在实例变量中使用它们有什么区别?我的意思是: 编辑: 就实现而言,实例变量和局部变量之间有什么区别,使用一个变量比使用另一个变量有什么好处?来自Sinatra的: 模板在与路由处理程序相同的上下文中进行计算。路由处理程序中设置的实例变量可由模板直接访问: get '/:id' do @foo = Foo.find(params[:id]) haml '%h1= @foo.name' end 或者,指定局部变量的显式哈希: get '
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模板调用Ruby方法,所以几乎总是希望向其传递局部变量
get '/:id' do
foo = Foo.find(params[:id])
haml '%h1= bar.name', :locals => { :bar => foo }
end