web-dev-qa-db-ja.com

Rails:収量について

Rails v2.アプリでコードを見ました。

layout/car_general.html.erb(このビューはcars_controllerのメソッドによって呼び出されます)で、私はコードを見ました:

<body>
    <%= yield %>

    <%= javascript_include_tag 'jquery-1.4.2.min' %>

    <% javascript_tag do %>
      <%= yield :jstemplates %>
          var some_car = new Object;
      <%= yield :some_car %>
    <% end -%>
</body>

尋ねる2つの質問:

  1. <body>の下の最初の<%= yield%>の利回りの内容はどこで確認できますか。
  2. Rails <%= yield :jstemplates %>を使用してビューにjsコードを含める特定の方法ですか?<%= yield :some_car %>はどうですか?ビューを指しているのか、単に値を表示していますかof some_car
31
Mellon

引数を指定しないと、yieldは現在のコントローラー/アクションのテンプレートをレンダリングします。したがって、cars/showページ、レンダリングされますviews/cars/show.html.erb

引数を渡すと、テンプレートの外部でレンダリングするコンテンツをテンプレートで定義できます。たとえば、cars/showページにはフッターでレンダリングしたい特定のhtmlスニペットがあります。ショーテンプレートとcar_general レイアウト:

show.html.erb:

<% content_for :footer do %>
  This content will show up in the footer section
<% end %>

layouts/car_general.html.erb

<%= yield :footer %>

Railsガイドにはyieldおよびcontent_forの使用に関する適切なセクションがあります。 http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

content_for も有用であり、他にもいくつかの例があります。 Rails 3.1.1のためのものですが、この機能は2.3からほとんど変わっていません。3.0.xおよび3.1.xにも適用されるはずです。

54
Peter Brown