La formattazione textarea popolata, ritorni a capo, a capo, e HAML
-
28-09-2019 - |
Domanda
Quando io popolo una textarea con testo utilizzando \ r \ n (ritorno a capo - nuova riga) il testo viene formattato in modo non corretto [UPDATE: \ r \ n è ciò che viene generato quando la compilazione di un textarea, sto semplicemente tirando da un database di ciò che è stato precedentemente compilato. anche la nota, in ambiente di produzione che non sembrano avere questo problema. FINE UPDATE] Ad esempio:
%textarea
= "hello\r\nHow are you?"
viene fuori in questo modo:
hello
How are you?
Sto pensando che questo potrebbe avere qualcosa a che fare con HAML. Qualcuno mi può aiutare? Nota:. Se io uso \ n \ r funziona benissimo, ma questo è tecnicamente errate e id hanno a che fare qualche gsubs a loro invertire per una corretta visualizzazione
Soluzione
A causa Haml fa rientrare automaticamente il codice sorgente HTML, il contenuto di variabili da spazi sensibili come pre e textarea può ottenere avvitato. La soluzione è quella di sostituire i ritorni a capo all'interno di questi tag HTML con a capo entità 

, che Haml non utilizzando gli aiutanti Haml::Helpers#preserve
e Haml::Helpers#find_and_preserve
.
Normalmente, Haml farà questo per voi automaticamente quando si utilizza un tag che ne ha bisogno (questo può essere personalizzato utilizzando l'opzione :preserve
). Ad esempio,
%p
%textarea= "Foo\nBar"
sarà compilato a
<p>
<textarea>
Foo
Bar</textarea>
</p>
Tuttavia, se un aiutante sta generando il tag, Haml non può rilevare che e quindi dovrete chiamare Haml::Helpers#find_and_preserve
te stesso. È inoltre possibile utilizzare ~
, che è lo stesso di =
tranne che venga eseguito automaticamente find_and_preserve
sul suo ingresso. Ad esempio:
%p= find_and_preserve "<textarea>Foo\nBar</textarea>"
è lo stesso di
%p~ "<textarea>Foo\nBar</textarea>"
e rende
<p><textarea>Foo
Bar</textarea></p>
. Fonte: questo Haml FAQ
Altri suggerimenti
Breve risposta se = f.text_area :foo
display indesiderato bianco-spazio in ogni fine riga:
sostituire =
con ~
Per una spiegazione più dettagliata per le ragioni dietro di esso, leggere risposta di Natalie e il docs Haml circa ~ .
Continuando con @ di NEX3 risposta, se si vuole fare un po 'di contenuti su più righe all'interno di una textarea, provare in questo modo:
%textarea#textarea_id{:name => 'area_name'}
:preserve
Line1
Line2
Line3
Line4
Line5
Modifica
%textarea
= "hello\r\nHow are you?"
a
%textarea "hello\r\nHow are you?"
tutto su una riga sembra aver risolto il problema. Immagino che significa che era un problema di HAML.