it-swarm.com.de

In Rails - Gibt es eine Rails-Methode, um Zeilenumbrüche in <br> umzuwandeln?

Gibt es eine Railsy-Methode, um\n in <br> umzuwandeln?

Momentan mache ich das so:

mystring.gsub(/\n/, '<br>')
107
daustin777

Ja, Rails hat simple_format, der genau das macht, wonach Sie suchen, und etwas besser, da es auch Absatz-Tags hinzufügt. Sehen 

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

Beispiel:

 simple_format(mystring)

Beachten Sie, dass simple_format grundlegende HTML-Tags zulässt, aber auch Text durch sanitize weiterleitet, wodurch alle Skripts entfernt werden. Es sollte also für Benutzereingaben sicher sein. 

241

Sie können es allgemeiner machen, indem Sie Folgendes tun:

mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')

Auf diese Weise würden Sie DOS, * NIX, Mac und versehentlich ungültige Zeilenenden abdecken.

38
Tomalak

Sie sollten vorsichtig damit umgehen, wenn Sie sich mit Benutzereingaben beschäftigen.
simple_format fügt <br>-Tags ein, aber es erlaubt andere HTML-Tags !

Wenn Sie simple_format verwenden, wird <b>Hello</b> als " Hello " gerendert. Sie möchten dies möglicherweise nicht.

Stattdessen können Sie <%= h(c.text).gsub("\n", "<br>").html_safe %> verwenden.
h() codiert zuerst das HTML, gsub ersetzt den Zeilenumbruch und html_safe erlaubt die Anzeige der <br>-Tags.

Dadurch wird genau das angezeigt, was der Benutzer eingegeben hat. Es erlaubt auch, HTML in z. Bemerkungen.

27
jomo

Einfach verwenden

white-space: pre-line;

in Ihrem CSS und Text wird Zeilenumbrüche umgebrochen.

14
bershika

Sie können auch überlegen, was Sie tun möchten - wenn Sie den von den Benutzern eingegebenen Text schön formatieren, können Sie einen Filter wie Markdown verwenden, damit Ihre Benutzer ihren Text formatieren können, ohne die Dose von Würmern zu öffnen ist HTML. Sie wissen, wie es bei Stack Overflow ist.

1
Jim Puls
mystring.gsub(/\r\n|\r|\n/, '\n')

arbeitete für mich

0
user7516728

Nee. Was Sie dort haben, ist die häufig verwendete Alternative. Die Definition, die die meisten Leute benutzen, ist:

   def nl2br text
       text.gsub(/\n/, '<br/>')
   end

Es wird als solches benannt, weil es die Funktionalität der PHP-Funktion mit dem gleichen Namen nachahmt.

0
ryeguy