Your SlideShare is downloading. ×
Ruby On Rails Insert
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ruby On Rails Insert

1,416

Published on

Come inserire i dati in una tabella che ha chiavi straniere

Come inserire i dati in una tabella che ha chiavi straniere

Published in: Education, Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,416
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ruby on Rails, insert su di un tabella voti Lezione del Prof. Silvano Natalizi, marzo 2009
  • 2. Testo del problema
    • Si vuole fare il programma che permette di inserire i voti nella tabella voti.
    • tracciato record della tabella:
    • Id (integer,chiave primaria)
    • datavoto (datetime)
    • studente_id (foreign key)
    • materia_id (foreign key)
    • prof_id (foreign key)
    • tipovoto (string)
    • voto (decimal)
    • desc (text)
  • 3. Creazione della applicazione voti
    • rails voti
    • cd voti
  • 4. Creazione scaffold delle tabelle senza chiavi straniere
    • ruby script/generate scaffold studente nome:string
    • ruby script/generate scaffold insegnante nome:string
    • ruby script/generate scaffold materia string:nome
    • rake db:migrate
    • Con il comando rake ha creato le tre tabelle con i nomi rispettivamente studentes, insegnantes, materias (il plurale in inglese)
  • 5. Inserimento di alcuni dati di prova nelle tabelle create
    • Lanciare il web server con il comando ruby script/server
    • Navigare su localhost:3000/materias
    • Inserire alcuni dati nella tabella materia
    • Navigare su localhost:3000/studentes
    • Inserire alcuni dati nella tabella studente
    • Navigare su localhost:3000/insegnantes
    • Inserire alcuni dati nella tabella insegnante
    • Tutto questo lo si fa con le view che sono state automaticamente generate dallo scaffold
  • 6. Ora bisogna creare la tabella con le chiavi straniere
    • Conviene fare il lavoro a mano
    • Anzitutto creiamo il modello
    • con il comando ruby script/generate model voto datavoto:datetime
    • studente_id:integer
    • materia_id:integer
    • prof_id:integer
    • tipovoto:string
    • voto:decimal
    • desc:text
    • quindi eseguire il comando: rake db:migrate
  • 7. La tabella votos
    • La tabella votos è starta creata con i campi desiderati, ma ancora è vuota
    • Possiamo esaminare le tabelle create, perché il database si chiama development.sqlite3 ed è interno alla cartella db
    • Lo possiamo aprire con il comando:
    • sqlite3 development.sqlite3
    • Poi possiamo vedere quali tabelle sono presenti con .tables
    • Infine possiamo vedere la sua struttura record con il comando .schema votos
  • 8. Ora creiamo il controllore per gestire l’inserimento dei dati in votos
    • Se guardiamo nella cartella app/controllers vediamo la presenza dei controllori insegnantes_controller.rb, materias_controller.rb, studentes_controller.rb, che sono stati creati dallo scaffold in maniera automatica
    • Chiaramente non è presente votos_controller
    • Ora creiamo votos_controller con il comando:
    • ruby script/generate controller votos
  • 9. Apriamo votos_controller.rb con un editor
  • 10. Scriviamo il codice che ci serve dentro la classe VotosController
    • Inseriamo anzitutto un metodo per leggere tutti gli studenti, tutte gli insegnanti, tutte le materie dalle rispettive tabelle del database
    • @materie=Insegnante.find(:all)
    • @studenti=Studente.find(:all)
    • @insegnanti=Insegnante.find(:all)
    • Osserva che le parole con la iniziale maiuscola sono i nomi delle classi dei modelli
    • Ogni modello corrisponde ad una tabella relazionale
  • 11. il metodo inserisciVoti
  • 12. Creazione della view inseriscivoti.html.erb
  • 13. Prova questo metodo inseriscivoti
    • Riavvia il web server con ruby script/server
    • Quindi naviga su localhost:3000/votos/inseriscivoti
    • Vediamo tre menù a tendina
  • 14. Mettiamo tutti i dati del voto in una form
    • I menù a tendina della materia, dell’insegnante, dello studente ci servono per gestire le chiavi straniere
    • Per tutti gli altri dati che non sono chiavi straniere, inseriamo delle caselle di testo
    • In fondo mettiamo un bottone di invio dati
  • 15. Come è fatta la form inseriscivoti
  • 16. Come è fatto il metodo create
  • 17. La visualizzazione della form
  • 18. Che cosa otteniamo con dei dati di prova
    • Come si vede, ci sono 2 errori: il campo del tipo voto è vuoto, inoltre il voto è zero! Perché ?
  • 19. Il seguito alla prossima puntata
    • Bisogna cercare l’errore. Per quanto riguarda il voto c’era da aspettarsi che qualcosa andasse male, perché il campo è di tipo testo, ed invece il voto è float. Pertanto bisogna trovare l’istruzione che permette di convertire una string in un decimale!
    • Per quanto riguarda il tipovoto, l’errore è strano, bisogna studiarci un pò,.
    • A domani
  • 20. Ho avuto un ripensamento
    • Ho corretto il primo errore dovuto al fatto che mancava l’istruzione che settava il valore di “tipovoto”. Ok
    • Per quanto riguarda il voto, la mia previsione era giusta, occorreva convertirlo in float con @voto.to_f
    • Ma non bastava. Occorreva modificare il nome di @voto in @voto1, altrimenti gli dava fastidio il fatto di avere lo stesso nome dell’oggetto @voto
    • Infine tutto ok! Come si può vedere dalla schermata successiva.
  • 21. Prova finale

×