[RUBY] Implementieren Sie Iterationen in View, indem Sie eine Sammlung rendern [Rails]

Ich denke, es ist üblich, jede in einer Ansichtsvorlage zu verwenden, beispielsweise beim Anzeigen eines Index.

Rails verfügt über eine Methode, mit der Sie dasselbe Element mithilfe einer Teilvorlage mehrmals anzeigen können, ohne jedes Element schreiben zu müssen.

Schreiben Sie mit jedem

Betrachten Sie als Beispiel den Fall, in dem der Benutzer als Tabelle angezeigt wird. Wenn Sie einen Controller wie den folgenden haben

users_controller.rb


def index
  @users = User.all
end

Sie können jeweils eine Tabelle wie folgt generieren:

erb:index.html.erb


<% @users.each do |user| %>
  <tr>
    <td><%= user.name %></td>
    <td><%= user.email %></td>
  </tr>
<% end %>

Rendern Sie die Sammlung mit Teilvirtualen

Sie können die Render-Methode verwenden, um Wiederholungen mit Teilpartien auszudrücken.

erb:index.html.erb


<%= render partial: "user", collection: @users  %>

Bereiten Sie einen Teilteil vor.

erb:_user.html.erb


  <tr>
    <td><%= user.name %></td>
    <td><%= user.email %></td>
  </tr>

Wenn Sie in der Auflistungsoption der Rendermethode eine Auflistung angeben, wird die Anzahl der Elemente und Teilpartials in diese Position eingebettet. Lokale Variablen in Teilpartials werden nach dem Partialnamen benannt.

Wenn Sie den Teil in Client umbenennen

<%= render partial: "client", collection: @users  %>

Die lokale Variable im Teilteil ist client.

erb:_client.html.erb


  <tr>
    <td><%= client.name %></td>
    <td><%= client.email %></td>
  </tr>

Bitte beachten Sie, dass dies nicht die Singularform der in der Sammlung angegebenen Variablen ist. Außerdem kann beim Hinzufügen der Erfassungsoption ein Teil nicht weggelassen werden.

Schlechtes Schreiben

erb:index.html.erb


<% @users.each do |user| %>
  <%= render "user", user: user %>
<% end %>

erb:_user.html.erb


  <tr>
    <td><%= user.name %></td>
    <td><%= user.email %></td>
  </tr>

Die wiederholte Anzeige von Teilvorlagen ohne Verwendung einer Sammlung führt zu einer schlechten Leistung. Verwenden Sie beim wiederholten Aufrufen der Teilvorlage die Erfassungsoption.

Abkürzung

erb:index.html.erb


<%= render @users %>

erb:_user.html.erb


  <tr>
    <td><%= user.name %></td>
    <td><%= user.email %></td>
  </tr>

Wenn Sie eine Auflistung als Argument der Rendermethode übergeben, wird der Teilname aus dem Modellnamen des Elements abgeleitet.

schließlich

Der Autor dieses Artikels ist ein Anfänger, der gerade erst anfängt, Programmieren zu lernen. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.


Referenz Leistungshinweise beim Rendern von Partials [Rails Guide](https://railsguides.jp/layouts_and_rendering.html#%E3%83%91%E3%83%BC%E3%82%B7%E3%83%A3%E3%83%AB%E3% 82% 92% E4% BD% BF% E7% 94% A8% E3% 81% 99% E3% 82% 8B)

Recommended Posts

Implementieren Sie Iterationen in View, indem Sie eine Sammlung rendern [Rails]
Markdown in Rails implementiert
Implementieren Sie die Anwendungsfunktion in Rails
Implementieren Sie die LTI-Authentifizierung in Rails
Monatskalender in Rails anzeigen
Implementieren Sie die Anmeldefunktion in Rails einfach mit Name und Passwort (1)
Implementieren Sie eine einfache Anmeldefunktion in Rails
Implementieren Sie ein Kontaktformular in Rails
Implementieren Sie die CSV-Download-Funktion in Rails
So implementieren Sie Suchfunktionen in Rails
So implementieren Sie eine Diashow mit Slick in Rails (einzeln und mehrfach nacheinander)
Festlegen der Startansicht in der Rails-App [root]
Implementieren Sie Schaltflächenübergänge mit link_to in Rails
Implementieren Sie eine Freigabeschaltfläche in Rails 6, ohne Gem zu verwenden
Buchungsfunktion implementiert durch asynchrone Kommunikation in Rails
Implementieren Sie die Sternebewertungsfunktion mit Raty in Rails 6
So trennen Sie .scss nach Controller in Rails
[Japanische Lokalisierung] i18n-Schienen Nur einfache Anzeige der japanischen Lokalisierungsansicht
[Rails] Informationen zur Sammlung beim teilweisen Rendern (beim Laden einer teilweisen Vorlage)
Zeigen Sie Text zeichenweise in der Oberflächenansicht auf Android an
Implementieren Sie die Rails-Paginierung
Group_by in Rails
[Rails] Freigabe anzeigen
So implementieren Sie die Gastanmeldung in 5 Minuten im Rails-Portfolio
Implementieren Sie die Nachsuchfunktion in der Rails-Anwendung (where-Methode).
So implementieren Sie eine nette Funktion in Ajax mit Rails
Einige subtil unterschiedliche sich wiederholende Schreibstile in der Rails-Ansicht
[Rails] Implementieren Sie die Registrierungs- / Löschfunktion für Kreditkarten in PAY.JP
Führen Sie devise with Rails ein, um Benutzerverwaltungsfunktionen zu implementieren
[Rails] So laden Sie JavaScript in einer bestimmten Ansicht
[Schienen] So zeigen Sie Bilder in der Ansicht an