Ho un grosso blocco di codice HTML nella mia applicazione che vorrei spostare in un modello condiviso e quindi usare content_for con i rendimenti per inserire il contenuto necessario. Tuttavia, se lo uso più volte nello stesso file di layout, il content_for si limita a fare in modo che l'idea non funzioni così bene. c'è una soluzione a questo?Più contenuto_for sulla stessa pagina
<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>
e utilizzare il seguente codice per impostare il contenuto del blocco
<%= 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" %>
Il problema è se uso questo più volte sullo stesso layout del contenuto dal blocco originale viene aggiunto al blocco secondario
ho provato a generare un metodo di supporto personalizzato per ottenere intorno ad esso, tuttavia non restituisce alcun contenuto
def overwrite_content_for(name, content = nil, &block)
@_content_for[name] = ""
content_for(name, content &block)
end
Potrei anche essere completamente sbagliato e se ci sono metodi migliori per far funzionare il contenuto in questo modo mi piacerebbe sapere. Grazie.
Questo ha fatto il trucco grazie. Capisco il problema del rendering due volte, ma sembra che l'uso di content_for e di layout sia preferibile a quell'incollatura nel grande blocco di HTML ovunque io abbia bisogno di mostrarlo. –
Non puoi scappare con i solitari normali? – Roman
Bene, in alcuni casi sto passando una grande quantità di contenuto HTML nel rendimento block_content. Non sono sicuro di come lo farei con i partial. –