Dies ist eine Problemumgehung, wenn Sie den Inhalt des Kopfzeilenmenüs für jede Seite ändern möchten. (Zum Beispiel möchte ich die Menüs von A, B und C auf dem Startbildschirm und das Menü von D auf dem neuen Buchungsbildschirm usw. anzeigen.)
MacOS 10.15.7 ruby 2.6.5 Ruby on Rails 6.0.0
Als Fluss, (1) Erstellen Sie eine Teilvorlage, indem Sie den Header in einen "Startbildschirm-Header" und einen "neuen Post-Screen-Header" unterteilen. (2) Verzweigen Sie bedingt gemäß dem Anforderungspfad und wechseln Sie den Anzeigeinhalt. Es wird sein.
Dieses Mal ändern wir den Menüinhalt, der beim Anmelden in der Kopfzeile angezeigt wird.
erb:_root_header.html.erb
<div class="headerMenus">
<div class="headerMenus__left">
<%= link_to image_tag("myTown4.jpg ", class: "headerLogo"), "/" %>
<% if user_signed_in? %>
<div class="loginedMenus">
<a href="#0", class="loginMenu">Top</a>
<a href="#1", class="loginMenu">Category</a>
<a href="#2", class="loginMenu">Prefecture</a>
<a href="#3", class="loginMenu">New Posts</a>
</div>
<% else %>
<div class="beforeLoginMenus">
<%= link_to "Gast-Login", users_guest_sign_in_path, method: :post, class: 'beforeLoginMenu' %>
<%= link_to "Einloggen", new_user_session_path, class: 'beforeLoginMenu' %>
<%= link_to "Anmelden", new_user_registration_path, class: 'beforeLoginMenu' %>
</div>
<% end %>
</div>
//Teilweise weggelassen//
</div>
Und schaffen. Übrigens, wenn Sie sich anmelden, sehen Sie vier Menüs: "Top, Kategorie, Präfektur, Neue Beiträge".
erb:_header.html.erb
<div class="headerMenus">
<div class="headerMenus__left">
<%= link_to image_tag("myTown4.jpg ", class: "headerLogo"), "/" %>
<% if user_signed_in? %>
<div class="loginedMenus">
<%= link_to "Top Page", root_path, class:"loginMenu" %>
</div>
<% else %>
<div class="beforeLoginMenus">
<%= link_to "Gast-Login", users_guest_sign_in_path, method: :post, class: 'beforeLoginMenu' %>
<%= link_to "Einloggen", new_user_session_path, class: 'beforeLoginMenu' %>
<%= link_to "Anmelden", new_user_registration_path, class: 'beforeLoginMenu' %>
</div>
<% end %>
</div>
//Teilweise weggelassen//
</div>
Wenn Sie sich anmelden, wird ein Menü mit dem Namen "Top Page" angezeigt.
Beschreiben Sie in application.html.erb in Ansichten / Layouts die bedingte Verzweigung gemäß dem Anforderungspfad (Pfad zum Startbildschirm oder Pfad anderer Bildschirme).
erb:application.html.erb
//Teilweise weggelassen//
<body>
<header class="header">
<%#Ändern Sie die Kopfzeilenanzeige auf der oberen Seite und auf anderen Seiten%>
<% if request.path == '/' %>
<%= render partial: "layouts/root_header" %>
<% else %>
<%= render partial: "layouts/header" %>
<% end %>
</header>
//Teilweise weggelassen//
</body>
Es gibt eine Beschreibung "<% if request.path ==" / "%>", was "wenn der Anforderungspfad" / "(root) ist" bedeutet. In diesem Fall wird der Stammpfad auf dem Startbildschirm festgelegt.
Wenn die Bedingung erfüllt ist (der Stammpfad)
<%= render partial: "layouts/root_header" %>
Rufen Sie _root_header.html.erb mit auf.
Wenn false (außer dem Root-Pfad)
<%= render partial: "layouts/header" %>
Rufen Sie header.html.erb mit auf.
das ist alles.
Ich frage mich, ob es einen anderen besseren Weg gibt. Wenn jemand einen besseren Weg hat, würde ich es begrüßen, wenn Sie es mir sagen könnten. Vielen Dank!