アプリケーションにHTMLの大きなブロックがあり、共有テンプレートに移動してから、content_forとyieldsを使用して必要なコンテンツを挿入します。ただし、同じレイアウトファイルで複数回使用すると、content_forが前のファイルに追加されるだけで、そのアイデアはうまく機能しません。これに対する解決策はありますか?
<div class="block side">
<div class="block_head">
<div class="bheadl"></div>
<div class="bheadr"></div>
<h2><%= yield :block_head %></h2>
</div>
<div class="block_content">
<%= yield :block_content %>
</div>
<div class="bendl"></div>
<div class="bendr"></div>
</div>
次のコードを使用して、ブロックのコンテンツを設定します
<%= overwrite_content_for :block_head do -%>
My Block
<% end -%>
<%= overwrite_content_for :block_content do -%>
<p>My Block Content</p>
<% end -%>
<%= render :file => "shared/_blockside" %>
問題は、同じレイアウトでこれを複数回使用すると、元のブロックのコンテンツが2番目のブロックに追加されることです。
それを回避するためにカスタムヘルパーメソッドを作成しようとしましたが、コンテンツが返されません
def overwrite_content_for(name, content = nil, &block)
@_content_for[name] = ""
content_for(name, content &block)
end
私もこれについて完全に間違っているかもしれません、そしてコンテンツをこのように機能させるためのより良い方法があれば私は知りたいです。ありがとう。