/ / En Rails 2 produciendo un bloque en un helper, ¿un método se hace parcial? - Rubí sobre rieles, rubí, erb

En Rails 2 produciendo un bloque en un helper, ¿un método se hace parcial? - Rubí sobre rieles, rubí, erb

Rieles 2.2.2

_competition.html.erb

<p>This is packed</p>
<% pack do %>
// some javascript
<% end %>

competitions_helper.rb

def pack(&block)
yield + "PACKED"
end

Sin embargo, "PACKED" no se anexa a mi cadena de javascript, es como si pack do no tiene efecto. Parece que hay algo extraño en el contexto de los bloques y en la visualización de la vista real porque si elimino la llamada para ceder en el ayudante y devuelvo una cadena codificada, no obtengo resultados del paquete.

Respuestas

2 para la respuesta № 1
def pack(&block)
concat(capture(&block) + "PACKED")
end

0 para la respuesta № 2

No lo probé, pero podrías intentarlo:

yield << "PACKED"

Es solo una forma diferente de combinar 2 cuerdas.


0 para la respuesta № 3

Como solución temporal, por el momento, colocar el javascript en otro parcial y pasarlo a la función de ayuda usando render_to_string, es decir. sin la necesidad de llamar yield trabajos.

<%= pack(render_to_string :partial => "_competition_javascript") %>