¿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_formatque 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_formatpermite etiquetas HTML básicas, pero también pasa texto a través del sanitizecual elimina todos los scripts, por lo que debería ser seguro para la entrada del usuario.
simple_formatenvuelve 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_tagopció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_formatpuede dividir en esa expresión regular, use mappara envolver las cadenas en las petiquetas de apertura y cierre , y luego únalas. mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.joindeberí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!
mystringlo contrario, podría contener HTML arbitrario.
Debe tener cuidado con esto cuando se trata de entradas de usuario.
simple_formatinserta <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, gsubreemplaza el salto de línea y html_safepermite la<br> que se muestren etiquetas.
Esto mostrará exactamente lo que ingresó el usuario. También permite discutir html en, por ejemplo, comentarios.
simple_formatpermite 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