Existe-t-il un moyen Railsy de convertir\n en <br>
?
Actuellement, je le fais comme ça:
mystring.gsub(/\n/, '<br>')
Oui, Rails a simple_format
qui fait exactement ce que vous recherchez et un peu mieux, car il ajoute également des balises de paragraphe. Voir
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Exemple:
simple_format(mystring)
Notez que simple_format
autorise les balises HTML de base, mais transmet également le texte via sanitize
, qui supprime tous les scripts, de sorte qu'il devrait être sécurisé pour les entrées utilisateur.
Vous pouvez le rendre plus général en faisant:
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
De cette façon, vous couvririez les fins de ligne DOS, * NIX, Mac et accidentelles non valides.
Vous devez faire attention à cela lorsque vous traitez avec une entrée utilisateur.simple_format
insère des tags <br>
mais il autorisera d'autres tags html !
Lorsque vous utilisez simple_format, <b>Hello</b>
sera rendu sous la forme " Hello ", vous ne voudrez peut-être pas cela.
Au lieu de cela, vous pouvez utiliser <%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
encodera le code HTML en premier, gsub
remplace le saut de ligne et html_safe
permet d'afficher les balises <br>
.
Cela affichera exactement ce que l'utilisateur a entré. Cela permet également de discuter de HTML dans, par exemple, commentaires.
Simplement utiliser
white-space: pre-line;
dans votre css et le texte va envelopper les sauts de ligne.
Vous pouvez également envisager ce que vous essayez de faire - si vous formatez correctement le texte que les gens ont entré, vous pouvez envisager un filtre tel que Markdown pour permettre à vos utilisateurs de formater leur texte sans ouvrir la boîte de Pandore qui existe. est HTML. Vous savez, comme ici chez Stack Overflow.
mystring.gsub(/\r\n|\r|\n/, '\n')
a travaillé pour moi
Nan. Ce que vous avez là est l’alternative couramment utilisée. La définition que la plupart des gens utilisent est:
def nl2br text
text.gsub(/\n/, '<br/>')
end
Il est nommé comme tel car il imite la fonctionnalité de fonction PHP du même nom .