Recientemente tuve un problema para escapar del valor devuelto por un rendimiento en una plantilla.Cómo escapar el valor devuelto por un rendimiento
En mi diseño, cedo la descripción de la meta de modo que pueda defino de mi plantilla
<meta name="description" content="<%= yield :html_description %>" />
Y aquí es mi plantilla, que por desgracia, no escapa el valor como se esperaba:
<% content_for :html_description, 'hello "you" guy' %>
<meta name="description" content="hello "you" guy" />
me trataron de escapar con el escaper h(), pero no funciona:
<meta name="description" content="<%= h(yield :html_description) %>" />
<meta name="description" content="hello "you" guy" />
también probé con escape_once(), pero no demasiado:
<meta name="description" content="<%= escape_once(yield :html_description) %>" />
<meta name="description" content="hello &quot;you&quot; guy" />
Sin embargo, concatenando el valor devuelto con una cadena, se soluciona el problema:
<meta name="description" content="<%= '' + (yield :html_description) %>" />
<meta name="description" content="hello "you" guy" />
¿Alguien entiende este comportamiento ?
¿Tiene una solución mejor que esta concatenación que lo arregla por coincidencia?
Estoy usando Rails 2.3.8 - ¡Gracias!
Hola ¿Usted intentó ayudante escape_javascript? – Bohdan
No, pero no hay javascript en este contexto. – Guillaume