39 votos

Rails -- Añadir un salto de línea en un área de texto

Tengo una aplicación rails donde puedo entrada de un par de párrafos de texto en mi modelo. El problema es que no sé cómo introducir saltos de línea.

He intentado añadir " {ln}{/ln} ; {&nbsp} y {br}{/br}" pero que sólo muestra el código html como texto y no romper.

Existe de todos modos me puede configurar de manera que el área de texto de control de uso de cualquiera de los html pongo en el modelo de entrada?

Es allí cualquier cosa me pueden escribir así rieles reconocerá, hey poner una línea de aquí?

78voto

Karl Puntos2712

Los saltos de línea en los textareas se producen como `\n'. Sin embargo, el problema es que si usted simplemente volcado en su opinión, va a ser sólo los saltos de línea en el código fuente HTML.

Usted puede tratar de usar los Rieles simple_format ayuda para cuidar de algo de esto para usted: http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#M002285

Auto-convertir saltos de línea para las etiquetas HTML. Se puede utilizar con algo como <%= simple_format(my_text_field) %>.

65voto

Ian Puntos1566

El problema no está tanto en la edición de el valor como es la representación más tarde. Para agregar caracteres de nueva línea en su valor, mientras que la edición en un textarea, simplemente pulse la tecla de retorno. Cuando se re-editar el valor más tarde, el espacio en blanco debe estar allí todavía.

La representación del espacio en blanco es la parte difícil. En HTML, el espacio en blanco es generalmente insignificante. Un sistema de representación, como el que su utiliza el navegador mostrará un espacio único para cualquier cadena continua de espacios en blanco. Así que simplemente volcar el valor en la página no será suficiente:

<%= obj.description %>

A pesar de que su valor puede ser "One \t \n \n Two", se mostrará en la pantalla como "One Two".

Para obtener los caracteres de salto de línea para realmente independiente de las líneas cuando se muestra, usted necesita para convertir a HTML antes de la representación:

<%= obj.description.gsub(/\n/, '<br/>') %>

Por supuesto, si el usuario introduce los datos que se incluirán en el HTML, usted debe escapar de los valores a proteger contra XSS. Si las nuevas líneas son la única cosa que usted necesita apoyo, que debería ser tan sencillo como esto:

<%= h(obj.description).gsub(/\n/, '<br/>') %>

Si desea permitir que el formato más complejo, buscar en las Rebajas y Textil (ambos de los cuales Rails ofrece ayudante de ver métodos). Sólo asegúrese de investigar si lo que cualquier apoyo que brindan para XSS la prevención.

7voto

vpsz Puntos241

Aquí es otra forma de mostrar los saltos de línea en una cadena, mientras que todavía se escape el resto del texto:

<%= safe_join(@object.textarea_input.split("\r\n"), "<br />".html_safe) %>

1voto

moo Puntos11

Ver aquí http://code.byteblues.com/2012/03/23/preloading-a-text-input-area-text_area-with-data-that-contains-a-line-break/

<%=raw text_area_tag :keywords, keywords, :rows => 8 %>

1voto

sagivo Puntos4759

el problema con simple_format es que es también la adición de otras etiquetas como <b><i><hr><h1>...
si sólo desea los saltos de línea, sin otras etiquetas sugiero que construir un parcial de (vamos a llamarlo line_break):

<% text.split("\n").each do |t| %>
  <%= t %><br>
<% end %>

a continuación, sólo tiene que llamar desde su punto de vista:

<%= render partial: 'line_break', locals: {text: some_text} %>

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: