通常は 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
とすることもできますが、お勧めはできませんね。