Scaffolding (Teil 1)
Seit Jahrhunderten hilft das Gerüst (engl. scaffolding) Baumeistern während der frühen Bauphasen, indem es den Zugang zum Bau ermöglicht und die Konstruktion stützt. Auch Programmierer verwenden temporären Scaffolding-Code, um Struktur zu verleihen und das System zu unterstützen, bis ausgereifterer Code zur Verfügung steht. Rails automatisiert das Scaffolding, um die frühe Codierungsphase produktiver zu machen als jemals zuvor.
In nahezu jeder Ruby on Rails-Demo von fünf oder mehr Minuten Länge werden Sie sehr wahrscheinlich dem Scaffolding begegnen. Rails-Gegner lehnen dieses Feature mit der Begründung ab, dass jeglicher Scaffolding-Code wieder verworfen wird, so dass die Vorteile nur künstlicher Natur seien. In gewisser Weise haben die Gegner recht. Scaffolding-Benutzerschnittstellen sind hässlich und unvollständig. Aber das Scaffolding bietet mehr als nur billige Demoeffekte. Hier einige Vorteile:
- Sie können Code sehr schnell generieren, um von Ihren Benutzern Feedback zu erhalten.
- Sie sind durch schnelle Erfolge motiviert.
- Sie können lernen, wie Rails funktioniert, indem Sie sich den generierten Code ansehen.
- Sie können das Scaffolding als Grundlage nutzen, um Ihre Entwicklung voranzutreiben.
- Sie können Metaprogrammierung nutzen, die sich automatisch anpasst, wenn sich die Struktur der Datenbank ändert.
In diesem Kapitel zeigen wir, wie man das Scaffolding zum Aufbau einer einfachen Benutzerschnittstelle für Photo Share nutzt. In späteren Kapiteln werden wir diese Grundlage erweitern, um unsere Anwendung weiter auszugestalten.
Die Scaffold-Methode
Wir haben bereits ein funktionierendes Modell für Photo Share vorgestellt, einschließlich Photos, Kategorien, Diashows und Dias, und wir sind in der Lage, das Schema über Active Record-Objekte innerhalb der Rails-Konsole zu verwalten. Der nächste Schritt besteht darin, das Scaffolding zu nutzen, um einfache Web-Benutzerschnittstellen für diese Klassen aufzubauen. Scaffolding bringt Sie auf Ihrem Weg ein gutes Stück weiter, generiert aber keine vollständige Anwendung. Aber das ist in Ordnung, schließlich suchen wir einen Anfang und keine vollständige Anwendung in Produktionsqualität.
Beginnen wir damit, den Benutzer eine Liste von Photos über das Web verwalten zu lassen. Stellen Sie sicher, dass Sie über eine Datenbank verfügen, dass diese konfiguriert ist und dass Sie über Tabellen mit Modellobjekten für Dias, Diashows, Kategorien und Photos verfügen.1 Wenn Ihr Server nicht läuft, starten Sie ihn wie üblich über ruby script/server. Besuchen Sie mit Ihrem Browser http://localhost:3000/, um sicherzustellen, dass die Dinge funktionieren. Sie sehen die Rails-Willkommensseite, wenn alles richtig funktioniert. Nutzen wir nun das Scaffolding.
Wir bauen unsere »Gerüste« mit Hilfe der scaffold-Methode auf. Diese Methode gehört zum Controller, weshalb wir einen Controller namens Photos anlegen müssen:
Fügen Sie die scaffold :photo-Methode wie folgt in photo_controller.rb ein:
Das war’s schon – Rails erledigt den Rest. Laden Sie nun die URL http://localhost:3000/photos, um sich das Scaffolding in Aktion anzusehen. Sie sehen eine Liste mit Photos, zusammen mit Links zum Anlegen neuer Photos, zum Editieren existierender Photos und zur Präsentation der vorhandenen Photos. Mit der einfachen Anweisung scaffold :photo erhalten Sie alle Seiten, die in Abbildung 4-1 aufgeführt sind. Das Scaffolding generiert überraschend vollständigen Controller- und View-Code. Um eins klarzustellen: Das Scaffolding erzeugt keinen produktionsfähigen Code, bietet aber einen guten Ausgangspunkt. Der nächste Abschnitt zeigt, wie das Scaffolding funktioniert.
scaffold :photo erledigt die ganze Arbeit. scaffold ist eine Methode von ActionController.2 :photo ist ein Symbol, das das Active Record-Modell festlegt, das Rails für dieses Scaffolding benutzt. Wenn Sie diese Methode angeben, fügt Rails Ihrem Controller die neun Methoden aus Tabelle 4-1 hinzu. Vier dieser Methoden geben Views aus. Zusammen bilden diese Methoden eine einfache CRUD-Schnittstelle für Ihr Active Record-Modell (basierend auf dem Objektmodell). Innerhalb des Modells enthält das @@content_columns-Attribut Informationen zu jeder Spalte der Datenbank.
Die meisten der Methoden aus Tabelle 4-1 rufen letztendlich die render_scaffold-Methode auf, die überprüft, ob Sie den entsprechenden View hinzugefügt haben. (Denken Sie daran, dass Rails-Views standardmäßig den gleichen Namen besitzen wie die Controller-Methode.) Ist das der Fall, verwendet Rails Ihre Views. Andernfalls stellt der Controller Standard-Views zur Verfügung.
Dieses Tutorial stammt aus dem Buch “Durchstarten mit Rails” aus dem O’Reilly Verlag.
Eingestellt am 03.07.2008 um 06:02
Suchen auf rubyonrails.de
Tags
2.0 ActiveRecord Ajax Authentication Buch Capistrano Controller Enterprise Event Formulare Gewinnspiel Grundlagen IDE irb jQuery Kochbuch Konferenz MySQL OReilly Passenger Phusion Plugin PragProgs Rails Rails 3 Rails 3.1 RailsWayCon Release Release Candidate Routing Ruby RubyGems rubyonrails.de Ryan Bates Scaffolding Screencast Script-Tip Security Test Tools Tutorial Upgrade Video Views WindowsAktuelle Artikel
- Screencast: JSON Dokumente mit Jbuilder erstellen
- Rails 3.2.1 veröffentlicht
- Screencast: Upgrade auf Rails 3.2
- Ruby on Rails 3.2
- Screencast: Private Pub für Realtime-Events
- Screencast: Pretty URLs mit FriendlyId
- Screencast: HTML Emails mit Rails verschicken
- Screencast: Einstieg in die Rails-Entwicklung
- Frohe Weihnachten!
- Screencast: Arbeit an der Konsole mit ZSH
Artikel Archiv
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- May 2009
- April 2009
- March 2009
- February 2009
- December 2008
- November 2008
- August 2008
- July 2008
- June 2008
- May 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
Aktuelle Rails Version + Abhängigkeiten:
Gem rails-3.0.0actionmailer (= 3.0.0, runtime)
actionpack (= 3.0.0, runtime)
activerecord (= 3.0.0, runtime)
activeresource (= 3.0.0, runtime)
activesupport (= 3.0.0, runtime)
bundler (~> 1.0.0, runtime)
railties (= 3.0.0, runtime)
Rails auf Rubyforge
Rails auf Github

