Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Sinatra局部变量与实例变量_Ruby_Sinatra - Fatal编程技术网

Ruby Sinatra局部变量与实例变量

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

Sinatra的局部变量到底是什么,在模板中使用它们与在实例变量中使用它们有什么区别?我的意思是:

编辑:

就实现而言,实例变量和局部变量之间有什么区别,使用一个变量比使用另一个变量有什么好处?

来自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模板调用Ruby方法,所以几乎总是希望向其传递局部变量

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