Rails - Fügt einen Zeilenumbruch in einen Textbereich ein
Bekam ich eine rails-app, wo ich eingeben können, ein paar Absätze von text in mein Modell. Das problem ist, ich weiß nicht, wie zu Eingang alle Zeilenumbrüche.
Ich habe versucht, fügen Sie " {ln}{/ln} ; { } und {br}{/br}", aber das zeigt nur den html-Code als text und nicht brechen.
Ist es trotzdem kann ich es so einstellen das Textfeld-Steuerelement verwenden Sie die html-ich Stelle in der Modell-Eintrag?
Gibt es eine Sache, die ich geben kann, so Schienen erkennen, hey, put a line hier?
InformationsquelleAutor der Frage ChrisWesAllen | 2010-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist nicht so sehr Bearbeiten den Wert, wie es ist, was es später. Hinzufügen newline " - Zeichen, um Ihren Wert während der Bearbeitung in einem Textbereich, drücken Sie einfach die return-Taste. Wenn Sie re-Bearbeiten Sie diesen Wert später, die whitespace-Zeichen sollte noch da sein.
Rendering der Leerraum ist der schwierige Teil. In HTML, whitespace ist in der Regel unbedeutend. Ein renderer wie der browser verwendet wird, anzuzeigen, einen einzigen Raum für kontinuierliche string von Leerzeichen. Also nur Abladen der Wert auf der Seite wird nicht genug:
Obwohl Ihr Wert kann
"One \t \n \n Two"
es wird zeigen, bis auf dem Bildschirm als"One Two"
.Um diese neue-Zeile-Zeichen tatsächlich trennen sich die Linien, wenn Sie angezeigt werden, müssen Sie konvertieren Sie Sie in HTML vor dem Rendern:
Natürlich, wenn Benutzer Daten eingeben, werden in den HTML-Code, Sie sollten die Flucht der Werte zum Schutz gegen XSS. Wenn neue Zeilen sind das einzige, was Sie brauchen, um zu unterstützen, es sollte so einfach wie diese:
Wenn Sie möchten, um mehr komplexe Formatierungen, Blick in Markdown und Textil (beide Schienen bietet helper view-Methoden für die). Nur sicher sein, zu untersuchen, was wäre, wenn jeder die Unterstützung, die Sie für XSS-Prävention.
InformationsquelleAutor der Antwort Ian Lesperance
Zeilenumbrüche in Texteingabefelder produziert werden, als `\n'. Das problem ist jedoch, dass, wenn Sie einfach nur werfen Sie es in Ihre Ansicht, es werde nur die Zeilenumbrüche in deinem HTML-Quelltext.
Können Sie versuchen, mit den Schienen
simple_format
Helfer kümmern sich einige von diesen für Sie: http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#M002285Wird es automatisch konvertiert Zeilenumbrüche in HTML-tags. Sie können verwenden Sie es mit so etwas wie
<%= simple_format(my_text_field) %>
.InformationsquelleAutor der Antwort Karl
Halten Benutzer die Eingabe unverändert, und fügen Sie diese in Ihre css:
Wird es display \r oder \n (enter) in Benutzereingaben werden in einer neuen Zeile.
InformationsquelleAutor der Antwort bershika
Hier ist ein weiterer Weg, um die Anzeige der Zeilenumbrüche in einem string-noch während der Flucht den rest des Textes:
InformationsquelleAutor der Antwort vpsz
Finden Sie hier http://code.byteblues.com/2012/03/23/preloading-a-text-input-area-text_area-with-data-that-contains-a-line-break/
InformationsquelleAutor der Antwort moo
das problem mit
simple_format
ist, dass es auch noch andere tags wie<b><i><hr><h1>
...wenn Sie wollen einfach nur Zeilenumbrüche ohne weitere tags, die ich schlage vor, Sie erstellen eine teilweise (nennen wir es line_break):
dann, nennen wir es doch einfach aus Ihrer Sicht:
InformationsquelleAutor der Antwort Sagiv Ofek
Welche version von rails verwenden Sie?? Denn die Art und Weise, damit umzugehen, unterscheidet sich in rails 2 und 3.
Sagen wir, der Wert des Datensatzes ist
"foo<br />bar"
In rails 3, wenn Sie auswerten möchten, die html, die Sie tun könnten
<%=raw "foo<br />bar" %>
wenn Sie dies tun, erhalten Sie eine Linie zu brechen, wenn Sie sehen, die anzeigen.In rails 2 Sie haben nicht zu tun, nur tun
<%= "foo<br />bar" %>
Auch HTML nicht bewertet textarea sowieso.
InformationsquelleAutor der Antwort kentor
\n
wenn der Speicher dient (es war nicht so gut heute... versuchen Sie auf eigene Gefahr, lol)Edit: die Annahme, Sie redeten über einen
textarea
wenn es ist einfach-Ausgang, verwenden Sie einfach<br>
InformationsquelleAutor der Antwort mynameiscoffey
Wenn Sie einfach nur die Anzeige die Zeichenfolge in den Blick. dann versuchen Sie es mit
InformationsquelleAutor der Antwort sameera207
Den oben genannten Antworten waren gut:
gsub
(@Ian) funktionierte gutsimple_format
(@Karl) war ein bisschen over the top, da @Aaron wies darauf hin, Verpacken alles in<p>
Also ich gezwickt wie folgt:
InformationsquelleAutor der Antwort Jon Kern