¿Cómo cedo desde un bloque de código ERB sin renderizarlo?

Considera lo siguiente:

view.html.erb:

<%= make_backwards do %>
  stressed
<% end %>

helper.rb:

def make_backwards
  yield.reverse
end

La vista representa stresseddesserts en lugar de solo postres . ¿Cómo uso el contenido en rendimiento sin representar el bloque de código?

0

2 Respuestas

Podrías intentar hacer el ff:

Opción 1:

<%= make_backwards { "stressed" } %>

Opcion 2:

<%= make_backwards do %>
  <% "stressed" %>
<% end %>

Avíseme si ayuda.

0
agregado

ERB tiene un búfer interno, lo que hace que el uso de bloques sea un poco más complicado, como se puede ver en el ejemplo del código.

Rails proporciona un método de captura , que le permite para capturar una cadena dentro de este buffer y devolverlo desde un bloque.

Entonces su ayudante se convertiría en lo siguiente:

def make_backwards
  capture do
    yield.reverse
  end
end
0
agregado
Muy útil Solo para cualquier otra persona que se acerque a esto, para insertar el bloque cedido en otra cadena: "<div id = # {some_id}> \ n # {capture {yield}} \ n </div>"
agregado el autor starfry, fuente