Scaffold


Vogliamo gestire le schede dei libri di una biblioteca memorizzando:
  • titolo: string
  • autore: string
  • anno: integer
  • introduzione: text
  • disponibile: boolean

Chiediamo a Rails di creare l'impalcatura (scaffold) per un model Book (per i model scegliamo sempre un nome in inglese, con l'iniziale maiuscola):

Avviso salvaesame

 Dedica tutto il tempo che serve a ricontrollare questo comando e a ripensare se hai inserito tutti i campi che ti servono, perché una volta avviato Rails procederà a creare tutta una serie di file che sarà difficile poi modificare manualmente.

Nel caso volessi eliminare lo scaffold appena creato, puoi farlo con il comando
rails destroy scaffold Book

Viene creata una migrazione, cioè una modifica alla struttura del database dell'applicazione:

Per applicare questa modifica al database diamo il comando:

Viene creato un model che ci permetterà di interagire col database da Rails, senza bisogno di scrivere query SQL:

Viene creato un controller con una serie di azioni:

  • index: lista dei libri
  • show: mostra un libro
  • new: mostra il form per creare un nuovo libro
  • create: crea un nuovo libro prendendo i dati dal form
  • edit: mostra il form per modificare un libro esistente
  • update: modifica un libro esistente prendendo i dati dal form
  • destroy: elimina un libro


Viene aggiunta una rotta, di tipo "resources", che in realtà è un insieme di rotte, una per ognuna delle azioni viste sopra:

Viene creata una view per ogni azione:
 _form è un "partial", usato sia dalla vista new che dalla vista edit:
Potrai raggiungere le pagine appena create dal percorso:
http://localhost:porta/books
Proviamo l'applicazione inserendo qualche libro:
Possiamo personalizzare le viste aggiungendo dei container, traducendole in italiano e inserendo le classi CSS di Bootstrap:
https://getbootstrap.com/docs/5.3/forms/overview/