Ho usato questo modello per un numero di helper in rails 2, ma non funziona allo stesso modo in rails 3. Il mio obiettivo è avere un metodo helper per generare alcuni tag html con contenuto annidato all'interno. Ecco un esempio di base di quello che sto cercando di ottenere:Come si arrende un metodo di supporto a un blocco in rotaie 3?
<div class="box">
my content
</div>
In rotaie 2 lo faccio come questo:
dentro il mio file di layout che io chiamo il metodo di supporto:
<% box_wrapper do %>
<%= yield -%>
<% end %>
il metodo di supporto è definito in questo modo:
def box_wrapper
concat <<-EOF.html_safe
<div class="box">
EOF
yield if block_given?
concat <<-EOF.html_safe
</div>
EOF
end
Ma in rails 3, quando lo sguardo si rendeva emette tutta la mia una pagina d poi all'interno dello box_wrapper
esegue il rendering di tutto il contenuto della pagina una seconda volta.
Penso che mi manchi qualcosa di ovvio su come utilizzare gli aiutanti e le rese. Qualche idea?
semplicemente inoltrando la raccomandazione di R. Bates: "AGGIORNAMENTO: mi raccomando di utilizzare il metodo" capture "invece di" with_output_buffer ".Questo ha il vantaggio di lavorare al di fuori delle visualizzazioni ERB. Il codice di seguito è stato aggiornato." – apneadiving
@apneadiving - Grazie per quello, sicuramente un miglioramento. –
Grazie! Il mio vero uso è più complicato di un semplice content_tag, ma è stato sufficiente per farmi iniziare. – nimblegorilla