Sinatra当地人与实例变量

时间:2013-06-10 07:42:26

标签: ruby sinatra

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

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

修改

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

1 个答案:

答案 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方法,因此您几乎总是希望将本地文件传递给它。