[RUBY] [Rails / simple_format] Hilfsmethode, die die im Formular eingegebenen Zeilenumbrüche widerspiegelt

Status

demo


Umgebung


Code gelernt

【Referenz】


Dieser Code

app/controllers/tasks_controller.rb


def show
  @task = Task.find(params[:id])
  @commits = @task.commits
end

erb:app/views/tasks/show.html.erb


<% @commits.each do |commit| %>
  <%= commit.content %>
<% end %>

Bei dieser Anzeigemethode werden die Zeilenumbrüche in commit.content nicht wiedergegeben.

<Gefällt mir> demo

Dies kann mit simple_format gelöst werden. Lass es uns tatsächlich tun.


Verwenden Sie simple_format

erb:app/views/tasks/show.html.erb


<!-- simple_Format verwenden-->
<% @commits.each do |commit| %>
  <%= simple_format(commit.content) %>
<% end %>

** simple_format ist eine Hilfsmethode **, die Zeilenumbrüche mit p-Tags und br-Tags ausdrückt. Geben Sie einfach den Text, den Sie ausgeben möchten, in simple_format ein und fertig.

![demo](https://gyazo.com/4876cddd4f1ea1b982c00c2ce63bc223/raw)

Nun, vorerst ist das Ziel erreicht. Es gibt jedoch ein Problem mit dieser Implementierung. Es ist nicht "entkommen" </ b>.

Lass uns genauer hinschauen.


Erlaube zu entkommen

Escape ist eine Technik, die bei Sicherheitsmaßnahmen eingesetzt wird. Einfach ausgedrückt hat es die Rolle " die Bedeutung aussagekräftiger Zeichen </ b> eliminieren".

Schauen wir es uns konkret an. Angenommen, Sie geben Folgendes ein.

demo

Wenn Sie diesen Wert anzeigen, ohne ihn zu umgehen, wird er als solches "HTML-Tag" erkannt.

demo

In HTML wird "<" als "das Tag startet!" Erkannt. Wenn es nicht maskiert wird, wird es daher als h1-Element angezeigt.

Diese Escape-Funktion wird mithilfe von <% =%> gewährt, das in Rails-Ansichten verwendet wird. Wenn Sie jedoch simple_format verwenden, verlieren Sie diese Funktionalität.

Verwenden Sie daher bei Verwendung von simple_format die Option h. Dies ist eine großartige Möglichkeit, simple_format eine Escape-Funktion hinzuzufügen.

erb:app/views/tasks/show.html.erb



<%#Verwenden Sie die Option h%>
<% @commits.each do |commit| %>
  <%= simple_format(h(commit.content)) %>
<% end %>

Dadurch wird die Anzeige wie unten gezeigt geändert.

demo

Die Bedeutung wird von "<" usw. entzogen und nur als Symbol oder Zeichen angezeigt. Gleichzeitig sind die Buchstaben kleiner geworden! (In p-Tag eingeschlossen)


Zusammenfassung

  • Ich möchte den Zeilenumbruch der Form widerspiegeln

  • Möglich mit simple_format!

  • Besser h für Sicherheitsmaßnahmen verwenden


Es scheint, dass simple_format häufig verwendet wird, aber es ist auch eine beängstigende Hilfsmethode, wenn Sicherheitsmaßnahmen vernachlässigt werden. Denken Sie bei der Verwendung daran.

Referenz