¿Existe una forma Railsy de convertir \ n a <br>?
Actualmente, lo estoy haciendo así:
mystring.gsub(/\n/, '<br>')
ruby-on-rails
ruby
daustin777
fuente
fuente

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. Verhttp://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Ejemplo:
Tenga en cuenta que
simple_formatpermite etiquetas HTML básicas, pero también pasa texto a través delsanitizecual elimina todos los scripts, por lo que debería ser seguro para la entrada del usuario.fuente
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 cosaPuede hacerlo más general haciendo:
De esta forma cubriría DOS, * NIX, Mac y terminaciones de línea no válidas accidentales.
fuente
simple_formatpuede dividir en esa expresión regular, usemappara envolver las cadenas en laspetiquetas 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 yhtml_safepermite la<br>que se muestren etiquetas.Esto mostrará exactamente lo que ingresó el usuario. También permite discutir html en, por ejemplo, comentarios.
fuente
simple_formatpermite etiquetas HTML básicas, es importante tener en cuenta que también pasa el textosanitize, lo que elimina todo lo que podría ser potencialmente malicioso. apidock.com/rails/ActionView/Helpers/TextHelper/simple_formatSimplemente use
en su css y el texto se ajustará a los saltos de línea.
fuente
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.
fuente
¡No! Lo que tienes ahí es la alternativa de uso común. La definición que la mayoría de la gente usa es:
Se llama así porque imita la funcionalidad de la función PHP con el mismo nombre .
fuente
trabajó para mi
fuente
Puedes hacer
simple_format(h(text))- elhse asegurará de que no se procese ningún HTML.Como se mencionó en otras respuestas, esto hará un poco más de lo que pidió. Envuelve todo
<p>y agrega más párrafos si tiene líneas nuevas dobles en cualquier lugar.fuente