(Ajax) scaffolding tutorial

1 april 2006, 22:24

Wat is scaffolding?

Scaffolding is het automatisch genereren van een eenvoudige interface om data te manipuleren. Vertrekkende van een database-tabel met een aantal kolommen erin, maakt het scaffold commando webpagina’s met formulieren (inclusief de verwerking/logica erachter) aan. Deze webpagina’s laten je toe een aantal gestandaardiseerde acties op data uit te voeren:

  • Een opsomming van data weergeven
  • data aanmaken (Create)
  • data weergeven (Read)
  • data aanpassen (Update)
  • data verwijderen (Delete)

Hoe scaffolding gebruiken?

Je kan gebruik maken van de scaffold generator of van dynamic scaffolding. Ze geven beiden hetzelfde resultaat. In dit artikel bespreek ik de scaffold generator.

Over het algemeen gebruik je de scaffold generator, via de console, als volgt:
ruby script/generate scaffold ModelName ControllerName action,…
Deze generator spreekt voor zichzelf: hij verwacht:


  • een naam voor je model

  • een naam voor je controller (optioneel; indien je er geen opgeeft, wordt het meervoud van de naam van je model gebruikt)

  • bijkomende actions (indien gewenst). Deze worden, weliswaar zonder inhoud, toegevoegd aan de controller en krijgen een view.
    Opmerking: de scaffold actions en views (index, list, show, new, create, edit, update, destroy) worden automatisch aangemaakt!

Indien je bijvoorbeeld een blog wil “scaffolden”, gebruik je de scaffold generator op deze manier:


  • Maak eerst een database-tabel (“posts”) aan en configureer config/database.yml

  • Start de scaffold generator via de console:
    ruby script/generate scaffold Post
    (of beter: maak gebruik van de scaffold generator in de RadRails generator view)

  • Start WEBrick of gelijk welke RoR server die je gebruikt en navigeer naar
    http://localhost:3000/Posts
    (deze URL hangt uiteraard af van je benamingen en van de WEBrick poort die je gebruikt)

Hoe werkt scaffolding?

  1. In het bestand config/database.yml voerde je alle gegevens in verband met je database in. Rails kan hierdoor verbinding met je database maken.
  2. Rails werd zo ontwikkeld dat het een model automatisch aan een database-tabel kan koppelen. De naam van de tabel waaraan het model gekoppeld wordt moet hiertoe steeds het meervoud zijn van de naam van het model (voorbeeld: als een tabel posts genoemd werd dan moet het model Post genoemd worden). Rails kan, indien een scaffold voor het Post model gestart wordt, zelf op zoek gaan naar de “posts” tabel, nagaan welke kolommen hij bevat (bijvoorbeeld id, title en post) en deze informatie doorspelen aan het “Post” model.
  3. Nu het model beschikbaar is, hoeft Rails enkel nog een controller (die standaard actions bevat) en enkele standaard views te creëren: index, list, show, new, create, edit, update, destroy.
    Opmerking: Rails is slim genoeg om te weten welke invoermogelijkheden het voor welke gegevens moet voorzien in de view. Deze invoermogelijkheden hangen af van de datatypes van de gegevens (ingesteld in de database). Mogelijke invoermogelijkheden zijn: korte tekstinvoer, een lang tekstveld, een datum-kiezer of een datumtijd-kiezer.

Extra: ajax scaffolding.

Richard White is een web interface designer en Rails ontwikkelaar die op zijn site een verbeterde scaffold generator ter beschikking stelt: de Ajax Scaffold Generator.
Deze is gebaseerd op dezelfde principes, maar de interface die gegenereerd wordt maakt gebruik van Ajax en werd van een aangenamere opmaak voorzien.

Om deze generator te gebruiken moet je hem uiteraard eerst installeren:
gem install ajax_scaffold_generator

Daarna kan je gebruik maken van:
ruby script/generate ajax_scaffold…
In plaats van
ruby script/generate scaffold…


Reacties

  1. ook geen reactie mee nodig


    ggs 29 maart 2010, 22:20

Reageer

Naam
Email
Website
Reactie

© 2006-2010 - Johan Van Mol