ERB や Slim などのテンプレートエンジンの partial でうまく早期リターンする

通常は partial の先頭で以下のように記述します。

<%# @condition が未設定の場合は、 partial の内容全体をレンダリングしない %>
<% return unless @condition %>

<div>
  早期リターンしなかったときの記述内容
</div>

ただ、 partial の途中で早期リターンしたいこともあるかと思います。その際に以下のように記述しても、早期リターン前の記述内容は最終的に出力されません。

<div>
  早期リターン前の記述内容
</div>

<%# @condition が未設定の場合は、 partial の内容全体をレンダリングしない %>
<% return unless @condition %>

<div>
  早期リターンしなかったときの記述内容
</div>

この場合は以下のように記述します。

<div>
  早期リターン前の記述内容
</div>

<%# @condition が未設定の場合は、 partial の内容全体をレンダリングしない %>
<% return self.output_buffer unless @condition %>

<div>
  早期リターンしなかったときの記述内容
</div>

self.output_bufffer にそれまでの実行結果が保存されていて、それを返すわけですね。
return output_buffer だけでも良いかと思って検証しましたが、どうもローカル変数として定義されているようで nil が返ります。
@output_buffer とすることもできますが、お勧めはできませんね。