¿Existe una forma Railsy de convertir \ n a <br>
?
Actualmente, lo estoy haciendo así:
mystring.gsub(/\n/, '<br>')
¿Existe una forma Railsy de convertir \ n a <br>
?
Actualmente, lo estoy haciendo así:
mystring.gsub(/\n/, '<br>')
Respuestas:
Sí, rieles tiene lo simple_format
que hace exactamente lo que estás buscando, y un poco mejor, ya que también agrega etiquetas de párrafo. Ver
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Ejemplo:
simple_format(mystring)
Tenga en cuenta que simple_format
permite etiquetas HTML básicas, pero también pasa texto a través del sanitize
cual elimina todos los scripts, por lo que debería ser seguro para la entrada del usuario.
simple_format
envuelve automáticamente el texto proporcionado en <p>
etiquetas, y que esta funcionalidad no se puede evitar.
javascript:alert(\no!\)
como se indica en la referencia. Podría haber variaciones infinitas y variaciones futuras para que los piratas informáticos malintencionados trabajen.
wrapper_tag
opción que permite cambiar la <p>
etiqueta por cualquier otra cosa
Puede hacerlo más general haciendo:
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
De esta forma cubriría DOS, * NIX, Mac y terminaciones de línea no válidas accidentales.
simple_format
puede dividir en esa expresión regular, use map
para envolver las cadenas en las p
etiquetas de apertura y cierre , y luego únalas. mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
debería hacerlo, aunque no lo probé.
<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
. ¡Y funciona como un encanto boohoo!
mystring
lo contrario, podría contener HTML arbitrario.
Debe tener cuidado con esto cuando se trata de entradas de usuario.
simple_format
inserta <br>
etiquetas pero permitirá otras etiquetas html .
Cuando use simple_format, <b>Hello</b>
se representará como " Hola ", es posible que no desee esto.
En su lugar, puede usar <%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
primero codificará el html, gsub
reemplaza el salto de línea y html_safe
permite la<br>
que se muestren etiquetas.
Esto mostrará exactamente lo que ingresó el usuario. También permite discutir html en, por ejemplo, comentarios.
simple_format
permite etiquetas HTML básicas, es importante tener en cuenta que también pasa el texto sanitize
, lo que elimina todo lo que podría ser potencialmente malicioso. apidock.com/rails/ActionView/Helpers/TextHelper/simple_format
Simplemente use
white-space: pre-line;
en su css y el texto se ajustará a los saltos de línea.
También puede considerar lo que está tratando de hacer: si está formateando bien el texto que la gente ha ingresado, podría considerar un filtro como Markdown para permitir a sus usuarios formatear su texto sin abrir la lata de gusanos que es HTML. Ya sabes, como si estuviera aquí en Stack Overflow.
¡No! Lo que tienes ahí es la alternativa de uso común. La definición que la mayoría de la gente usa es:
def nl2br text
text.gsub(/\n/, '<br/>')
end
Se llama así porque imita la funcionalidad de la función PHP con el mismo nombre .
mystring.gsub(/\r\n|\r|\n/, '\n')
trabajó para mi