Gibt es eine Railsy-Möglichkeit zum Konvertieren in \ n <br>
?
Derzeit mache ich das so:
mystring.gsub(/\n/, '<br>')
ruby-on-rails
ruby
daustin777
quelle
quelle
Antworten:
Ja, Rails hat
simple_format
genau das, wonach Sie suchen, und ist etwas besser, da es auch Absatz-Tags hinzufügt. Sehenhttp://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Beispiel:
Beachten Sie,
simple_format
dass grundlegende HTML-Tags zulässig sind, aber auch Text weitergeleitet wird, durchsanitize
den alle Skripts entfernt werden. Daher sollte dies für Benutzereingaben sicher sein.quelle
simple_format
der bereitgestellte Text automatisch in<p>
Tags eingeschlossen wird und dass diese Funktionalität nicht vermieden werden kann.javascript:alert(\no!\)
in der Referenz angegeben interpretieren . Es kann endlose und zukünftige Variationen geben, mit denen böswillige Hacker arbeiten können.wrapper_tag
Option, das<p>
Tag für alles andere zu ändernSie können es allgemeiner machen, indem Sie Folgendes tun:
Auf diese Weise würden Sie DOS, * NIX, Mac und versehentlich ungültige Zeilenenden abdecken.
quelle
simple_format
können Sie diese Regex aufteilen,map
die Zeichenfolgen in öffnende und schließendep
Tags einschließen und sie dann verbinden.mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
sollte es tun, obwohl ich es nicht getestet habe.<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
. Und es funktioniert wie ein Zauber Boohoo!mystring
könnte beliebiges HTML enthalten.Sie sollten vorsichtig sein, wenn Sie mit Benutzereingaben arbeiten.
simple_format
fügt<br>
Tags ein, erlaubt aber andere HTML-Tags !Wenn Sie simple_format verwenden,
<b>Hello</b>
wird dies als " Hallo " gerendert. Möglicherweise möchten Sie dies nicht.Stattdessen können Sie verwenden
<%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
, um zuerst den HTML-Code zu codieren,gsub
den Zeilenumbruch zu ersetzen undhtml_safe
die<br>
Anzeige der Tags zu ermöglichen.Dies zeigt genau an, was der Benutzer eingegeben hat. Es erlaubt auch, HTML in zB Kommentaren zu diskutieren.
quelle
simple_format
grundlegende HTML-Tags zulässig, es ist jedoch wichtig zu beachten, dass auch der Text weitergeleitet wirdsanitize
, wodurch alles entfernt wird, was möglicherweise bösartig sein könnte. apidock.com/rails/ActionView/Helpers/TextHelper/simple_formatEinfach benutzen
in Ihrem CSS und Text werden Zeilenumbrüche umbrochen.
quelle
Sie können auch überlegen, was Sie tun möchten. Wenn Sie den eingegebenen Text gut formatieren, können Sie einen Filter wie Markdown in Betracht ziehen , mit dem Ihre Benutzer ihren Text formatieren können, ohne die HTML-Dose mit Würmern zu öffnen. Sie wissen, wie es hier bei Stack Overflow ist.
quelle
Nee. Was Sie dort haben, ist die häufig verwendete Alternative. Die Definition, die die meisten Leute verwenden, ist:
Es wird als solches benannt, weil es die Funktionalität der gleichnamigen PHP-Funktion nachahmt .
quelle
arbeitete für mich
quelle
Sie können dies tun
simple_format(h(text))
- dies stellth
sicher, dass kein HTML gerendert wird.Wie in anderen Antworten erwähnt, wird dies etwas mehr bewirken, als Sie verlangt haben. Es packt das Ganze ein
<p>
und fügt weitere Absätze hinzu, wenn Sie irgendwo doppelte Zeilenumbrüche haben.quelle