Scaffolding (Teil 2)
Scaffolding ersetzen:
Bei vielen Frameworks (etwa denjenigen, die vollständig auf Codegenerierung basieren) übernehmen Sie die Verantwortung für die Verwaltung des Scaffoldings selbst, sobald Sie einen Teil des Scaffoldings ersetzen. Nicht so bei Rails. Sie können einen einzelnen View oder Controller modifizieren oder neu schreiben, ohne dass sich das auf den Rest des Scaffoldings auswirkt.
Fügen wir beispielsweise eine Titelseite über die index-Methode in die PhotosController-Klasse ein:
Laden Sie nun http://localhost:3000/photos/index. Sie sehen die Meldung »Willkommen auf der Titelseite von Photo Share« wie in Abbildung 4-2, was zeigt, dass Sie die index-Methode überschrieben haben, die durch das Scaffolding zur Verfügung gestellt wurde.
Laden Sie http://localhost:3000/photos/list, um sicherzustellen, dass der Rest des Scaffoldings noch immer intakt ist. Rails macht es einem auch leicht, einen View zu ersetzen, während das Controller-Scaffolding erhalten bleibt. Lassen Sie uns den View für die show-Aktion ersetzen. Legen Sie die Datei app/views/photos/show.rhtml an:
Sie sehen den erzeugten View in Abbildung 4-3. Wie vorhin können Sie einige Views ersetzen, während andere unangetastet bleiben. Wie Sie sehen, bleibt das Scaffolding aktiv, bis Sie es überschreiben. Ist das der Fall, verschwindet es Stückchen für Stückchen, je nachdem, wie Sie es ersetzen.
Das Scaffolding ist dynamisch
Sie können das Rails-Scaffolding nutzen, um eine einfache Benutzerschnittstelle zur Verfügung zu stellen, während Sie an Ihrem Datenbankschema arbeiten. Die Benutzer können überprüfen, ob Sie alle benötigten Daten verwenden. Sehen wir uns an, wie das Rails-Scaffolding Änderungen an einem Schema handhabt. Wir beginnen damit, zusätzliche Spalten für einen Timestamp, ein Vorschaubild (»Thumbnail«) und eine Beschreibung in die Datenbank einzufügen. Legen Sie eine neue Migration namens add_photo_columns an. Sie ändern die Definition der photos-Tabelle dann, indem Sie ruby script/generate migration add_photo_columns eingeben. Editieren Sie die resultierende Migration in db/migrate so, dass sie wie folgt aussieht:
Dieses Migrationsskript aktualisiert die Photos-Tabelle und die darin enthaltenen Daten. Nun führen Sie die Migration aus, indem Sie rake migrate eingeben und die Seite (http://localhost:3000/photos/list) im Browser neu laden. Die neuen Spalten erscheinen wie in Abbildung 4-4. Tatsächlich funktionieren alle Scaffolding-Views. Mittels Scaffolding können Sie Ihr Datenbankschema und -modell schnell anpassen, ohne sich gleichzeitig auf die Entwicklung der Benutzerschnittstelle konzentrieren zu müssen.
Vor- und Nachteile
Sie haben gerade gesehen, wie man das Scaffolding mit Hilfe des scaffold-Tags bzw. mit Hilfe der Metaprogrammierung nutzt. Dieser Scaffolding-Ansatz hat gegenüber anderen Frameworks (etwa der Codegenerierung) einige entscheidende Vorteile:
- Das scaffold-Tag ist dynamisch. Sie können unbesorgt an Ihrem Datenbankschema arbeiten, und die Schnittstelle passt sich automatisch an.
- Sie können Controller-Methoden oder Views überschreiben, ohne das gesamte Scaffolding selbst pflegen zu müssen.
- Das Scaffold-Tag ist sehr kompakt, d.h., Sie erreichen mit einer einzigen Codezeile sehr viel.
Generell bietet der Rails-Ansatz der Metaprogrammierung revolutionäre Vorteile gegenüber der Codegenerierung. Der wichtigste ist wohl, dass sich das dynamische Scaffolding kontinuierlich der Umgebung anpasst. Der Metaprogrammierungsansatz besitzt aber auch einige wesentliche Nachteile:
- Sie wissen nicht, was passiert. Wenn Sie Rails und das Scaffolding kennenlernen, ist es von großem Nachteil, dass der Code vor Ihnen verborgen bleibt.
- Das Verhalten des Scaffoldings könnte sich bei späteren Rails-Versionen verändern. Dieses Verhalten könnte sich als Nachteil herausstellen, wenn Ihnen Vorhersagbarkeit wichtig ist.
- Sie können den Scaffolding-Code nicht als Basis für die weitere Entwicklung verwenden.
Aus diesen Gründen bietet Rails die Codegenerierung als Alternative zum Scaffolding an. Wir sehen uns als Nächstes an den Scaffolding-Codegenerator.
Dieses Tutorial stammt aus dem Buch “Durchstarten mit Rails” aus dem O’Reilly Verlag.
Details zu dem Buch
Eingestellt am 04.07.2008 um 05:58
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: RABL – Ruby API Builder Language
- 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!
Artikel Archiv
- February 2012
- 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



