Esiste un modo Railsy per convertire \ n in <br>
?
Attualmente, lo sto facendo in questo modo:
mystring.gsub(/\n/, '<br>')
Esiste un modo Railsy per convertire \ n in <br>
?
Attualmente, lo sto facendo in questo modo:
mystring.gsub(/\n/, '<br>')
Risposte:
Sì, rails ha simple_format
che fa esattamente quello che stai cercando, e leggermente migliore poiché aggiunge anche tag di paragrafo. Vedere
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Esempio:
simple_format(mystring)
Nota che simple_format
consente tag HTML di base, ma passa anche il testo attraverso il sanitize
quale rimuove tutti gli script, quindi dovrebbe essere sicuro per l'input dell'utente.
simple_format
avvolge automaticamente il testo fornito nei <p>
tag e che questa funzionalità non può essere evitata.
javascript:alert(\no!\)
quella fornita nel riferimento. Potrebbero esserci infinite variazioni e variazioni future con cui gli hacker malintenzionati possono lavorare.
wrapper_tag
un'opzione che consente di cambiare <p>
tag per qualsiasi altra cosa
Puoi renderlo più generale facendo:
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
In questo modo coprirai DOS, * NIX, Mac e terminazioni di riga non valide accidentali.
simple_format
te puoi dividere su quella regex, usare map
per avvolgere le stringhe nei p
tag di apertura e chiusura , e poi unirli. mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
dovrebbe farlo, anche se non l'ho testato.
<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
. E funziona come un fascino boohoo!
mystring
potrebbe contenere HTML arbitrario.
Dovresti fare attenzione quando hai a che fare con l'input dell'utente.
simple_format
inserisce <br>
tag ma consentirà altri tag html !
Quando si utilizza simple_format, <b>Hello</b>
verrà visualizzato come " Hello ", potresti non volerlo.
Invece puoi usare <%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
codificherà prima l'html, gsub
sostituisce l'interruzione di riga e html_safe
consente la visualizzazione dei <br>
tag.
Questo mostrerà esattamente ciò che l'utente ha inserito. Permette anche di discutere html ad esempio nei commenti.
simple_format
consenta tag HTML di base, è importante notare che passa anche il testo sanitize
, il che rimuove tutto ciò che potrebbe essere potenzialmente dannoso. apidock.com/rails/ActionView/Helpers/TextHelper/simple_format
Basta usare
white-space: pre-line;
nel tuo css e il testo andrà a capo su interruzioni di riga.
Potresti anche considerare ciò che stai cercando di fare: se stai formattando bene il testo che le persone hanno inserito, potresti prendere in considerazione un filtro come Markdown per consentire ai tuoi utenti di formattare il loro testo senza aprire il barattolo di worm che è HTML. Sai, come qui su Stack Overflow.
No. Quello che hai è l'alternativa comunemente usata. La definizione che la maggior parte delle persone usa è:
def nl2br text
text.gsub(/\n/, '<br/>')
end
È chiamato come tale perché imita la funzionalità della funzione PHP con lo stesso nome .
mystring.gsub(/\r\n|\r|\n/, '\n')
ha funzionato per me