Подтвердить что ты не робот

Рельсы: о урожае

Я видел некоторый код в приложении Rails v2.3.

В 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>

Два вопроса:

  • Где можно найти содержание урожайности первого% <% = yield% > под <body>.
  • Является ли это особым способом использования js-кода в представлении, используя <%= yield :jstemplates %> и как насчет <%= yield :some_car %>, указывает ли это на представление или просто показать значение some_car?
4b9b3361

Ответ 1

Без каких-либо аргументов доход будет отображать шаблон текущего контроллера/действия. Поэтому, если вы находитесь на странице cars/show, она отобразит views/cars/show.html.erb.

Когда вы передаете аргумент yield, он позволяет вам определять контент в ваших шаблонах, которые вы хотите отображать вне этого шаблона. Например, если ваша страница cars/show содержит определенный фрагмент html, который вы хотите визуализировать в нижнем колонтитуле, вы можете добавить следующее к вашему шаблону show и макет car_general:

show.html.erb:

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

макеты /car _general.html.erb

<%= yield :footer %>

В Rails Guide есть хороший раздел по использованию yield и content_for: http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

Документация API для content_for также полезна и имеет некоторые другие примеры. Обратите внимание, что это для Rails 3.1.1, но эта функциональность не сильно изменилась с 2.3, если вообще, и все равно должна применяться для 3.0.x и 3.1.x.