5

シナトラのローカルとは正確には何ですか?インスタンス変数とは対照的に、テンプレートでそれらを使用することに違いはありますか? 地元の人の意味は次のとおりです。

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

編集:

実装に関して、インスタンス変数とローカル変数の違いは何ですか? また、どちらか一方を使用する利点はありますか?

4

1 に答える 1

5

シナトラのイントロより:

テンプレートは、ルート ハンドラーと同じコンテキスト内で評価されます。ルート ハンドラーで設定されたインスタンス変数は、テンプレートから直接アクセスできます。

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 のメソッドを Radius テンプレートから直接呼び出すことはできないため、ほとんどの場合、これに locals を渡します。

于 2013-06-10T08:29:57.557 に答える