Der b4um:table Generator ist bewusst auf die Darstellung beschränkt.
Er erzeugt keine neue:
Migration
Route
Controller
Model
Auch unsere vorhandenen Product-Datensätze werden nicht verändert.
Stattdessen erhalten wir ein wiederverwendbares View-Partial, das wir dort einbinden können, wo wir unsere Products als Tabelle darstellen möchten.
3. Die Tabelle in der Product-Übersicht verwenden
Das Tabellen-Partial existiert jetzt, wird aber noch nicht automatisch auf unserer Index-Seite verwendet.
Das ist Absicht.
Der Generator entscheidet nicht für uns, an welcher Stelle unserer Anwendung die Tabelle erscheinen soll.
Wir öffnen deshalb:
app/views/products/index.html.erb
Aus dem vorherigen Tutorial wird dort aktuell unser Bento-Partial eingebunden:
<%= render "bento", products: @products%>
Diese Zeile ersetzen wir durch:
<%= render "table", products: @products%>
Unsere vollständige index.html.erb sieht anschließend so aus:
<% content_for :title, "Products"%><divclass="page-header"><h1>Products</h1><%= link_to "New product", new_product_path, class: "button button--primary"%></div><%if@products.any? %><%= render "table", products: @products%><%else%><sectionclass="b4um-empty-state"><h2class="b4um-empty-state__title">
No products yet.
</h2><pclass="b4um-empty-state__text">
Create your first product to get started.
</p></section><%end%>
Damit haben wir die Daten selbst nicht verändert.
Wir haben lediglich die Darstellung ausgetauscht.
Aus:
<%= render "bento", products: @products%>
wurde:
<%= render "table", products: @products%>
4. Die Tabellenansicht im Browser
Jetzt öffnen beziehungsweise aktualisieren wir:
http://localhost:3000/products
Unsere fünf vorhandenen Products werden nun nicht mehr als Karten, sondern in einer Tabelle dargestellt.
Die Tabelle besitzt die Spalten:
Name
Description
Price
Status
Actions
Die Felder, die wir beim Generator angegeben haben, bestimmen also die dargestellten Produktinformationen.
Zusätzlich steht für jeden Datensatz eine Aktion zur Verfügung.
1.webp
106 KB
Die fertige Product-Übersicht als responsive b4um Tabelle. Status-Felder werden automatisch als Badge dargestellt und für jeden Datensatz steht eine Aktion zur Verfügung.
5. Status automatisch als Badge
Eine Besonderheit unseres Beispiels ist das Feld:
status
In unseren Datensätzen steht dort beispielsweise:
Verfügbar
Der Tabellen-Generator erkennt ein Status-Feld und stellt dessen Inhalt als b4um Badge dar.
Dadurch hebt sich der Status optisch von den übrigen Tabellenwerten ab.
Wir müssen dafür in unserer Index-Seite keinen zusätzlichen HTML-Code schreiben.
6. Lange Textfelder
Unsere description ist als:
description:text
definiert.
Textfelder können in einer Tabellenansicht schnell sehr viel Platz beanspruchen.
Der b4um Tabellen-Generator berücksichtigt dies und kürzt Textfelder in der Tabellenansicht auf 100 Zeichen.
Dadurch bleibt die Übersicht kompakt, auch wenn ein Datensatz später eine deutlich längere Beschreibung enthält.
Die eigentlichen gespeicherten Daten werden dabei natürlich nicht gekürzt. Es betrifft nur ihre Darstellung innerhalb der Tabelle.
7. Die Actions-Spalte
Neben unseren angegebenen Feldern erzeugt die Tabelle zusätzlich eine Spalte:
Actions
Dort befindet sich für jeden Product-Datensatz ein:
Show
Button.
Über diesen Button gelangen wir zur Detailansicht des jeweiligen Products.
Dadurch bleibt die Tabellenansicht übersichtlich, während die vollständigen Informationen weiterhin über die jeweilige Show-Seite erreichbar sind.
8. Die Tabelle ist wiederverwendbar
Genau wie beim Bento-Generator arbeitet auch das Tabellen-Partial mit einer lokalen Collection.
Unsere normale Product-Übersicht verwendet:
<%= render "table", products: @products%>
Wir könnten dasselbe Partial aber auch mit einer anderen Product-Collection verwenden.
Wenn unser Controller beispielsweise ausgewählte Products bereitstellt:
Responsive b4um Tabellenkomponente
Typisierte Felddefinitionen
Kürzung langer Textfelder auf 100 Zeichen
Status-Felder als Badge
Actions-Spalte mit Show-Button
Wiederverwendbare lokale Collection
Dabei werden keine Migrationen, Routes oder Controller erzeugt.
haben wir für unsere bestehende Product-Ressource ein wiederverwendbares Tabellen-Partial erzeugt.
Anschließend mussten wir lediglich:
<%= render "bento", products: @products%>
durch:
<%= render "table", products: @products%>
ersetzen.
Unsere vorhandenen Products, das Model, der Controller und die Routes blieben unverändert.
Damit können wir für eine bestehende Ressource zwischen unterschiedlichen Darstellungen wechseln, ohne die zugrunde liegenden Daten neu aufbauen zu müssen.
Im nächsten Tutorial
Mit fünf Products ist unsere Tabelle noch sehr übersichtlich.
Bei einer größeren Anzahl von Datensätzen stellt sich allerdings schnell eine neue Frage:
Wie findet ein Besucher einen bestimmten Eintrag?
Genau darum kümmern wir uns als Nächstes.
Im nächsten Tutorial erweitern wir unsere bestehende Product-Ressource mit:
bin/rails generate b4um:search Product
Damit erhält unsere Product-Übersicht eine datenbankgestützte Suche.
Wir werden ausprobieren, wie wir beispielsweise nach:
Mac
iPad
Display
suchen können und wie sich die Suche mit unseren unterschiedlichen b4um Darstellungen kombinieren lässt.
Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren,
Funktionen für soziale Medien anbieten zu können und die Zugriffe auf
unsere Website zu analysieren.
Sie akzeptieren unsere Cookies, wenn Sie fortfahren diese Webseite zu
nutzen.
Datenschutzerklärung.