[RUBY] So wechseln Sie die Anzeige des Header-Menüs für jede Übergangsseite

Einführung

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

Vollständiges Bild

headerchange.gif

Umgebung

MacOS 10.15.7 ruby 2.6.5 Ruby on Rails 6.0.0

Lass uns arbeiten!

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.

① Erstellen Sie Teilvorlagen für "Startbildschirm-Header" und "Neuer Post-Bildschirm-Header".

①-1 Erstellen Sie zunächst eine Kopfzeile für den Startbildschirm. Erstellen Sie "_root_header.html.erb" im Verzeichnis views / layout.

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".


##### ①-2 Erstellen Sie eine Teilvorlage für den Bildschirm "Kopfzeile für neue Buchung". Erstellen Sie "_header.html.erb" im Verzeichnis views / layout.

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.

(2) Verzweigen Sie bedingt gemäß dem Anforderungspfad und wechseln Sie den Anzeigeinhalt.

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.

Schließlich

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!

Recommended Posts

So wechseln Sie die Anzeige des Header-Menüs für jede Übergangsseite
[Schienen] So ändern Sie den Seitentitel des Browsers für jede Seite
Anzeigen der vom Docker-Container verwendeten Festplattenmenge für jeden Container
So zeigen Sie das Ergebnis des Ausfüllens des Formulars an
[Java] So erhalten Sie die URL der Übergangsquelle
So zeigen Sie das Auswahlfeld von time_select alle 30 Minuten an
[Rails] So zeigen Sie eine Liste der Beiträge nach Kategorie an
JVM für jedes Projekt wechseln
[Rails] So erhalten Sie die URL der Übergangsquelle und leiten sie um
So zeigen Sie 0 auf der linken Seite des Standardeingabewerts an
So erhalten Sie den Inhalt von Map mithilfe des for-Anweisungsmemorandums
[Rails] So lassen Sie die Anzeige der Zeichenfolge der link_to-Methode weg
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
So sortieren Sie eine Liste von SelectItems
[Swing] So zeigen Sie einen beliebigen Namen in der Menüleiste des Mac an
So beschränken Sie die Aktion des Übergangsziels, wenn Sie nicht angemeldet sind
So finden Sie die Ursache des Ruby-Fehlers
Schaltfläche [Schienen], um zum Anfang der Seite zurückzukehren
Passen Sie an, wie der Inhalt von Recyclerview aufgeteilt wird
So zeigen Sie eine Webseite in Java an
Wie komme ich zum heutigen Tag?
[Für Anfänger] So implementieren Sie die Löschfunktion
[Ruby] Code zur Anzeige des Tages
[Java] (für MacOS) Methode zur Einstellung des Klassenpfads
So geben Sie den JavaScript-Index für die Anweisung an
[Rails Devise] So wechseln Sie Benutzer, die nicht auf der Anmeldeseite angemeldet sind
[Java] Anzeigen der von LocalDate und DateTimeformatter erfassten Tage auf Japanisch
[Rails] So zeigen Sie die Wettervorhersage der registrierten Adresse auf Japanisch mit OpenWeatherMap an
So löschen / aktualisieren Sie das Listenfeld von OneToMany
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
Wie schreibe ich Scala aus der Perspektive von Java
[Rails, JS] So implementieren Sie die asynchrone Anzeige von Kommentaren
[Java] So erhalten Sie den Maximalwert von HashMap
Ich möchte den Namen des Posters des Kommentars anzeigen
[Rails] So ändern Sie den Spaltennamen der Tabelle
[Android] So erhalten Sie die Einstellungssprache des Terminals
[Rails] So erhalten Sie den Inhalt starker Parameter
So beurteilen Sie den Klick eines beliebigen Bildbereichs
So laden Sie eine ältere Version von Apache Tomcat herunter
Wie erstelle ich einen MOD für Slay the Spire?
So schleifen Sie Java Map (für jede / erweiterte for-Anweisung)
[Swift] So erhalten Sie die Firebase-Dokument-ID
Ausführen des WebCamCapture-Beispiels von NyARToolkit für Java
[Schienen] So zeigen Sie Bilder in der Ansicht an
Wie man Kotlin zum ersten Mal studiert ~ Teil 2 ~
Wie man Kotlin zum ersten Mal studiert ~ Teil 1 ~
So verwalten Sie den Unterschied in jeder Umgebung mit yml, ohne die Anzahl von RAILS_ENV zu erhöhen
[SwiftUI] Ich habe versucht herauszufinden, wie es sich für jeden angegebenen Hintergrund ändert
SDWebImage: So löschen Sie den Cache für eine bestimmte UIImageView
Übergang mit dem Header-Image von CardView
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
Die Idee von C # (Lambda-Ausdruck, für Satz) zu kauen
So ändern Sie den Einstellwert von Springboot Hikari CP