Tengo un bloque grande de HTML en mi aplicación que me gustaría mover a una plantilla compartida y luego uso content_for con yields para insertar el contenido necesario. Sin embargo, si lo uso más de una vez en el mismo archivo de diseño, el contenido se agrega al anterior, por lo que la idea no funciona tan bien. ¿Hay una solución para esto?Múltiple content_for en la misma página
<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>
y uso el siguiente código para establecer el contenido para el bloque
<%= 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" %>
El problema es si uso esto varias veces en la misma disposición el contenido del bloque original se anexa al bloque secundaria
he intentado crear un método de ayuda personalizada para llegar a su alrededor, sin embargo, no devuelve ningún contenido
def overwrite_content_for(name, content = nil, &block)
@_content_for[name] = ""
content_for(name, content &block)
end
Es posible que también me esté yendo completamente mal y si hay mejores métodos para hacer que el contenido funcione de esta manera, me gustaría saberlo. Gracias.
Esto hizo el truco gracias. Comprendo el problema de renderizar dos veces, pero parece que usar content_for y layouts es preferible a pegar en el bloque grande de HTML en todas partes donde lo necesito. –
¿No puedes salirte con parciales normales? – Roman
Bueno, en algunos casos estoy pasando una gran cantidad de contenido HTML en el rendimiento: block_content. No estoy seguro de cómo lograría eso con parciales. –