Немного покопавшись в коде content_for, я нашел рабочее решение, создав вспомогательный метод:
def content_exists?(name)
return true if instance_variable_get("@content_for_#{name}")
return false # I like to be explicit :)
end
и в представлении:
<% if content_exists?(:title)-%>
<%= yield :title %>
<% else -%>
404 - Page Unknown
<% end -%>
Пока что это работает (Rails 2.3.5).