Поскольку все шаблоны Rails поддерживают content_for :xyz
, который запускается yield :xyz
, это означает, что все шаблоны всегда заключаются в блок, подготовленный для извлечения этих content_for
данных.
Поскольку этот запрограммированный блок всегда есть, для размещения content_for
это означает, что block_given?
всегда будет возвращать true.
Я думаю, что это может быть небольшой недосмотр вРельсы вид дизайна. Было бы неплохо, если бы у нас был отдельный метод, чтобы определить, был ли частичный блок предоставлен.
Одна идея для обхода проблемы:
<% if (block = yield).empty? %>
<h1>Goodbye world</h1>
<% else %>
<%= block %>
<% end %>