Без каких-либо аргументов yield будет отображать шаблон текущего контроллера / действия.Так что, если вы находитесь на странице cars/show
, она будет отображать views/cars/show.html.erb
.
Когда вы передадите yield аргументу, это позволит вам определить контент в ваших шаблонах, который вы хотите визуализировать вне этого шаблона.,Например, если на вашей странице 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
Документация по API для content_for
также полезна и имеет несколько других примеров для подражания.Обратите внимание, что это для Rails 3.1.1, но эта функциональность не сильно изменилась с 2.3, если она вообще существует и должна применяться для 3.0.x и 3.1.x.