Ответ 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.