2012-04-30 8 views
17

Mi ayudante funciona así:carriles ayudante - ¿cómo puedo obtener un ayudante que me diera un `<br/>` (o de otras marcas)

def some_help(in_string) 
    in_string + " and more" 
end 

Pero lo quiero hacer a un
antes de la salida y yo sigo obteniendo los < br> caracteres ellos mismos literalmente, es decir, no un descanso, pero lo que quiero es un < br> ese es el problema.

por lo

def some_help(in_string) 
    "<br/>" + in_string + " and more" 
end 

no funciona bien.

+0

Normalmente, querría mencionar lo que, específicamente, no funciona. –

+1

Se ha actualizado la pregunta – junky

Respuesta

33

Uso tag(:br) en lugar de "<br/>".

content_tag(:br) crea apertura y cierre br etiquetas y el uso de raw o html_safe es sólo feo (por no mencionar peligroso).

+0

¿Por qué el uso de 'raw' o' html_safe' es peligroso? – fmmatheus

+1

Si usa 'raw' y' html_safe' con la entrada del usuario y olvida escaparse de esa entrada, se configurará para un ataque XSS. 'raw ("
# {h user_input} ")' está bien, pero 'raw ("
# {user_input} ")' es peligroso. La diferencia es el método 'h', que es un alias para el método' html_escape'. – Ashitaka

2

No estoy seguro de que te entendamos. ¿Agregas <br /> en tu cadena, y se mantiene en claro mientras quieres que tenga el efecto de una nueva línea? Si es así, debe marcar su cadena como html-safe. haces esto con "somestring".html_safe.

0

Los rieles escapan automáticamente de los caracteres HTML. Use .html_safe en la cadena.

Cuestiones relacionadas