1

Railsのチュートリアルを進めていて、レイアウトの部分まで来ました。ビューでは「provide」を使用し、レイアウト ファイルでは「yield」を使用するように指示されています。コードで代わりにインスタント変数を使用しないのはなぜですか: について見る:

<% @title = 'about' %>

アプリケーションのレイアウト

<title>Website Name | <%= @title %></title>

この本では代わりにより複雑な構文を使用しており、正当な理由があると確信しています

について見る:

<% provide(:title, 'Help') %>

アプリケーションのレイアウト

<title>Website Name | <%= yield(:title) %></title>

両方を試したところ、どちらもうまくいきました。しかし、より単純なインスタント変数の方法を使用しない理由がわかりませんか?

4

2 に答える 2

1

提供する代わりに、content_forを使用して、コードのブロックを渡すことができます。そうすれば、yieldはこのコードブロックを実行できるようになります。変数を出力するだけではありません。

より複雑なビューでは、「ヘルパー」と呼ばれる別の概念を使用するため、これは便利です。良い仕事を続けてください、そして私は物事が将来明らかになると確信しています。

于 2013-01-31T19:48:32.037 に答える
0

provideorを使用する必要がcontent_forあるのは、変数の値を事前に決定できない場合です。

例:

  • レンダリング レイアウト
    • yield タイトル <-- まだ定義されていません
    • yield メインテンプレート
      • タイトルを提供 <-- ここで定義
于 2013-01-31T20:15:19.413 に答える