¿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_format
que 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_format
permite etiquetas HTML básicas, pero también pasa texto a través delsanitize
cual elimina todos los scripts, por lo que debería ser seguro para la entrada del usuario.fuente
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 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_format
puede dividir en esa expresión regular, usemap
para envolver las cadenas en lasp
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 yhtml_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.
fuente
simple_format
permite 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))
- elh
se 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