· 4 min read
Vollständige CRUD-Anwendungen mit Streamlined generieren
Verwenden Sie das Streamlined-Framework, um eine flexible administrative Schnittstelle für Ihre Anwendung zu erzeugen.
Beginnen Sie mit dem Download und der Installation des streamlined_generator-Gems:
$ wget http://streamlined.relevancellc.com/streamlined_generator-0.0.4.gem
$ sudo gem install streamlined_generator-0.0.4.gem
Wir wollen annehmen, dass Sie bereits über ein Datenbankschema verfügen. Zum Beispiel besitzen Sie Tabellen namens galleries und paintings, bei der ein Gemälde zu einer Galerie gehört. Erzeugen Sie (falls das noch nicht geschehen ist) eine Rails-Anwendung:
$ rails art_gallery
Dann wechseln Sie in das Anwendungsverzeichnis und generieren eine Streamlined-Anwendung mit Hilfe des Streamlined-Generators:
$ cd art_gallery/
$ script/generate streamlined gallery painting
Sie übergeben dem Generator alle Modelle, die im resultierenden Streamlined-Interface enthalten sein sollen. Sie können nun Ihre Anwendung starten und mit Ihrem Browser zu /galleries oder /paintings wechseln, um auf Ihre Streamlined-Schnittstelle zuzugreifen.
Was Streamlined gegenüber dem normalen Rails-Scaffolding so leistungsfähig macht, ist die Tatsache, dass es Beziehungen erkennt, die Sie zwischen Ihren Modellen herstellen, und dann Widgets einfügt, mit deren Hilfe Sie diese Beziehungen über die Schnittstelle kontrollieren können.
Um eine 1-zu-M-Beziehung zwischen galleries und paintings herzustellen, fügen Sie Folgendes in Ihre Modellklassen-Definitionen ein:
app/models/gallery.rb:
class Gallery < ActiveRecord::Base
has_many :paintings
end
app/models/painting.rb:
class Painting < ActiveRecord::Base
belongs_to :gallery
end
Im Entwicklungsmodus sehen Sie die hinzugefügte Spalte sowohl im Gallery- als auch im Painting-View, mit Informationen darüber, in welcher Beziehung ein Modell zum anderen steht.
Diskussion
Viele der Rails-Anwendungen, mit denen Sie arbeiten, brauchen administrative Schnittstellen, wie sie von Streamlined erzeugt werden. Dieser Teil einer Site ist für normale Anwender üblicherweise nicht zugänglich und muss visuell nicht wirklich was hermachen, er muss aber funktionieren. Üblicherweise werden damit grundlegende CRUD-Operationen durchgeführt. Während das Rails-Scaffolding als temporäre Struktur gedacht ist, die Sie letztendlich durch eigenen Code ersetzen, wurde die Streamlined-Schnittstelle so entworfen, dass sie produktionsreifen Code generiert.
<|XrefColor>Abbildung 2-5 zeigt die resultierende Streamlined-Schnittstelle, die die Paintings-Listenansicht ausgibt.
Ein erklärtes Ziel der Streamlined-Entwickler besteht darin, das Standard-Scaffolding von Rails durch robustere, nützlichere und sinnvolle Managementseiten zu ersetzen. Wie Sie sehen können, ist die resultierende Schnittstelle wesentlich ansehnlicher als das Standard-Scaffolding. Sie werden es sicher nicht für die Kundenseite Ihrer Website einsetzen wollen, aber es ist mit Sicherheit gut genug für ein Demo und mehr als ausreichend für eine Management-Schnittstelle. Einige der zur Verfügung stehenden Features sind Links auf alle dem Streamlined-Generator übergebenen Modelle, sortierfähige Spalten, ein Suchfilter und eine Schnittstelle für die Editierung der Beziehungen zwischen Modellobjekten.
Ein anderes Ziel des Projekts besteht darin, die Views der Anwendung mit Hilfe einer deklarativen Syntax anpassen zu können, wobei diese Syntax Active Record ähnelt (z.B. belongs_to :gallery). Um zum Beispiel die Art und Weise zu ändern, wie der Gallery-View die zu ihm gehörenden Gemälde darstellt, würden Sie Folgendes in die GalleryUI-Modelldefinition aufnehmen:
app/streamlined/gallery.rb:
class GalleryUI < Streamlined::UI
# relationship :paintings, :summary => :count # Standard
relationship :paintings, :summary => :list, :fields => [:name]
end
module GalleryAdditions
end
Gallery.class_eval {include GalleryAdditions}
Diese Klasse gibt eine Liste der Gemälde für jede Gallerie unter der Paintings-Spalte aus. Die auskommentierte Deklaration gibt die Gesamtzahl zugehörigen painting-Datensätze einer Spalte aus.
Sie können Operationen in den Prototype-Fenstern editieren und betrachten. Diese Fenster basieren auf Code, der durch die script.aculo.us-Effekt-Bibliothek inspiriert wurde. In diesen Fenstern vorgenommene Änderungen aktualisieren die sie anstoßende Seite per Ajax.
Übergeben Sie die Option —help an den Streamlined-Generator, wenn Sie weitere Informationen zu den Nutzungsoptionen wünschen. Besuchen Sie auch das Streamlined-Wiki (http://wiki.streamlinedframework.org/streamlined/show/HomePage).
Dieses Rezept stammt aus dem Rails Kochbuch, veröffentlicht beim O’Reilly Verlag