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

È stato utile?

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&#x000A;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&#x000A;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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top