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.
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.)
<!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