[RUBY] [Rails] Lernen Sie Ausbeute, um content_for zu verstehen

Teilen Sie das gemeinsame Layout und das individuelle Layout nach Ertrag

Rails wendet grundsätzlich ** allgemeines Layout ** auf application.html.erb an, und action.html.erb verwaltet ** variable Teile ** innerhalb des body -Tags.

Hier wird "Ertrag" zum Teilen und Verwalten verwendet. Sehen wir uns ein Beispiel an! !!

app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title>Sample</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>

Bemerkenswert ist die "Ausbeute". Die geteilte Datei wird hier gespeichert. So verwenden Sie die Ausbeute. Lassen Sie uns jetzt darüber nachdenken, indem Sie hier "content_for" einfügen! Betrachten wir dieses Mal ein Programm, das den Titel ändert.

Verwendung von content_for und Yield

content_for wird verwendet, wenn von ** individuellem Layout zu allgemeinem Layout angezeigt wird. ** Nehmen wir ein Beispiel.

application.html.erb

<title><%= yield :title %></title>

Auf diese Weise können Sie den Titelteil variabel ändern. Es wird häufig verwendet, wenn sich das Layout in einer App mehrmals ändert.

app/views/hello/index.html.erb
<% content_for :title do %>
    hello#Indextitel
<% end %>

<h1>hello#index</h1>
<p>Find me in app/views/hello/index.html.erb</p>

Beachten Sie hier von content_for: title do bis end. Dieser Teil reagiert mit "Yield: Title" und gibt ein. Tatsächlich ist das Bild wie folgt.

<title>hello#Indextitel</title>

Übrigens können Sie den Standardwert auch wie folgt einstellen.

<title><%= content_for?(:title) ? yield(:title) : "Sample"%></title>

Wenn content_for? Content_for hat, wirdyield (: title)geladen, andernfalls lautet der Titel" Sample ". (Es ist ein ternärer Operator.)

Wie wird es tatsächlich verwendet?

<!DOCTYPE html>
<html>
  <head>
    <title>Sample</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <header>Header-Design</header>
      <div class="notice">
        <%= content_for?(:notice) ? yield(:notice) %>
      </div>
      <%= yield %>
  </body>
</html>

Achten Sie auf den unteren Rand der Kopfzeile. Bekanntmachung (Stellen Sie sich hier eine Bekanntmachung vor.) Ich schreibe ein Programm, das Ausbeute (: Bekanntmachung) anzeigt, wenn eine Bekanntmachung vorliegt.

Wenn Sie "Hinweis" in allen Layouts anzeigen möchten, aber den Inhalt ändern möchten, können Sie dies wie folgt tun.

<%= yield(:notice) %>

Mit einer geteilten (variablen) Datei

<%= content_for :notice do%>
  <p>Hinweis!</p>
<% end %>
<%= content_for :notice do%>
  <p>Großartige Neuigkeiten!</p>
<% end %>

Sie können auch den gemeinsamen Layoutteil für jede Seite ändern.

Recommended Posts

[Rails] Lernen Sie Ausbeute, um content_for zu verstehen
Grundlegende Rails-Befehle, die Sie lernen möchten
Wie schreibe ich Rails
Einführung in Bootstrap in Rails 5
Bootstrap in Rails einführen !!
Einführung von Vue.js in Rails
So deinstallieren Sie Rails
Migration in Schienen verstehen
[Rails] Vollständig verstanden form_with
[Schienen] Wie poste ich Bilder?
[Rails] Verwendung von Enum
[Rails] Verwendung von Enum
Wie man Schienenrouten liest
Verwendung von Rails Join
[Schienen] Spalte zum Entwickeln hinzufügen
So beenden Sie den Rails-Server
Wie schreibe ich Rails Seed
[Rails] Verwendung der Validierung
[Schienen] So deaktivieren Sie Turbolinks
Übergeben Sie die Parameter an Rails link_to
[Rails] So verwenden Sie authenticate_user!
[Rails] So implementieren Sie Scraping
[Schienen] Wie man Samen macht
Wie schreibe ich Rails Routing
[Rails] So installieren Sie simple_calendar
Java-Thread locker zu verstehen
[Rails] So installieren Sie reCAPTCHA
Einführung des gRPC-Clients in Schienen
[Schienen] Verwendung von Scope
Cheet Sheet für Java-erfahrene Leute, um Ruby (Rails) zu lernen
Ich habe versucht zu verstehen, wie die Rails-Methode "redirect_to" definiert ist
Ich habe versucht zu verstehen, wie die Rails-Methode "link_to" definiert ist