RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

37
[email protected] [email protected] 1 Het MVC-framework Het MVC-framework Ruby on Rails Ruby on Rails Ietwat beschouwend en Ietwat beschouwend en hands-on tegelijk hands-on tegelijk

description

 

Transcript of RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

Page 1: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

[email protected]@khlim.be 11

Het MVC-frameworkHet MVC-frameworkRuby on RailsRuby on Rails

Ietwat beschouwend en Ietwat beschouwend en

hands-on tegelijkhands-on tegelijk

Page 2: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

OverzichtOverzicht

Klein woordje over de omgevingKlein woordje over de omgeving Belangrijkste principesBelangrijkste principes Snelle test : Depot Snelle test : Depot

http://pragprog.com/titles/rails2http://pragprog.com/titles/rails2 Principes concreter gemaaktPrincipes concreter gemaakt

Traditionele tutorial van “10 minuten”Traditionele tutorial van “10 minuten” Geavanceerdere dingenGeavanceerdere dingen

afsprakensysteemafsprakensysteem

Page 3: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Omgeving: netbeans 6.1Omgeving: netbeans 6.1

Eerst Ruby installeren via Eerst Ruby installeren via http://http://www.rubyonrails.orgwww.rubyonrails.org/down/down Meer info over Ruby on Rails: Meer info over Ruby on Rails: http://http://www.rubyonrails.orgwww.rubyonrails.org//

Netbeans zelf Netbeans zelf http://bits.netbeans.org/download/trunk/nightly/latest/http://bits.netbeans.org/download/trunk/nightly/latest/ Voor Mac en Windows zélfde omgeving!!Voor Mac en Windows zélfde omgeving!! Kies IDE met ondersteuning voor Ruby Kies IDE met ondersteuning voor Ruby

Alleen ruby support als weinig geheugen (heb ik sowieso gedaan)Alleen ruby support als weinig geheugen (heb ik sowieso gedaan) Zorg ook voor localhost met mysqlZorg ook voor localhost met mysql

http://www.xampp.orghttp://www.xampp.org Eventueel in config.inc.php auth_type veranderen naar httpEventueel in config.inc.php auth_type veranderen naar http

Bookmark http://www.netbeans.org/kb/trails/ruby.htmlBookmark http://www.netbeans.org/kb/trails/ruby.html

http://http://lifeonrails.orglifeonrails.org/2007/8/30//2007/8/30/netbeans-the-best-ruby-on-rails-idenetbeans-the-best-ruby-on-rails-ide

Alternatieven: InstantRails voor Windows, Locomotive voor Alternatieven: InstantRails voor Windows, Locomotive voor MacMac

Page 4: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Rails upgraden naar 2.0.2Rails upgraden naar 2.0.2

Kies “File” Kies “File” “New project” “New project” rechts “Ruby On Rails rechts “Ruby On Rails Application”Application”

Klik “Next” Klik “Next” Selecteer onderaan het Ruby-platform “Ruby 1.8.6”Selecteer onderaan het Ruby-platform “Ruby 1.8.6” Als het er niet bij staat -> manage platforms Als het er niet bij staat -> manage platforms

add platform, selecteer ruby.exe in de map ruby/bin add platform, selecteer ruby.exe in de map ruby/bin Nog eens “Next”Nog eens “Next” Dan bovenaan “Install Rails” Dan bovenaan “Install Rails”

Op naar versie 2.0.2Op naar versie 2.0.2 Duurt wel efkes!Duurt wel efkes!

En dan “Finish” En dan “Finish” De eerste keer wordt Ruby en Instant Rails ook nog helemaal De eerste keer wordt Ruby en Instant Rails ook nog helemaal

geindexeerd voor gebruik in de omgeving.geindexeerd voor gebruik in de omgeving.

Page 5: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Belangrijk Belangrijk Design PatternDesign Pattern : : MVCMVC

Model Model

View View

Controller Controller

cfr. invoer – verwerking - uitvoer

Page 6: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

MVC volgens RailsMVC volgens Rails

Model is direct gekoppeld aan database (per tabel een model)Model is direct gekoppeld aan database (per tabel een model) Grotendeels automatisch gegenereerdGrotendeels automatisch gegenereerd

View is de webpagina View is de webpagina .html.erb = html met klein beetje Ruby.html.erb = html met klein beetje Ruby

Controller vertaalt requests van view in acties op databaseController vertaalt requests van view in acties op database Directe mapping tussen methodenaam en ‘bestand’ van de viewDirecte mapping tussen methodenaam en ‘bestand’ van de view

Page 7: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Doordacht frameworkDoordacht framework

Development – Testing – DeploymentDevelopment – Testing – Deployment Zijn verschillende fasesZijn verschillende fases Belang wordt nogal eens onderschatBelang wordt nogal eens onderschat Hier mooi ingebakkenHier mooi ingebakken

Aparte databases!Aparte databases! Migratie tussen versiesMigratie tussen versies Ondersteuning van EROndersteuning van ER Declaratief : meer “wat” dan “hoe”Declaratief : meer “wat” dan “hoe”

‘‘validatie’ van veldenvalidatie’ van velden Opstellen van een formulierOpstellen van een formulier Abstractie van SQL (~~)Abstractie van SQL (~~)

Mooie actie-gebaseerde URL’sMooie actie-gebaseerde URL’s

Page 8: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

GeautomatiseerdGeautomatiseerd

OO: Getters & setters OO: Getters & setters database : CRUD database : CRUD Create, Read, Update and DeleteCreate, Read, Update and Delete

Rake (Ruby Make): neemt repetitief werk Rake (Ruby Make): neemt repetitief werk overover

Code-generatie : scaffoldingCode-generatie : scaffolding In rails 1.2.5 blijft die ‘automatisch’ up to dateIn rails 1.2.5 blijft die ‘automatisch’ up to date In rails 2 is die code een vertrekbasisIn rails 2 is die code een vertrekbasis

Niet automatisch up 2 dateNiet automatisch up 2 date Minder parameters (dus meer default gedrag)Minder parameters (dus meer default gedrag) Maar wel meer (betere) controle voor ontwikkelaarMaar wel meer (betere) controle voor ontwikkelaar

Page 9: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Belangrijkste verandering in Belangrijkste verandering in 2.02.0

Traditionele scaffolding is weg!Traditionele scaffolding is weg! Dus meeste tutorials van 1.2 werken Dus meeste tutorials van 1.2 werken

niet!niet! Korte uitleg Korte uitleg

http://davidlynch.org/blog/2008/01/rails-20-scaffolding/http://davidlynch.org/blog/2008/01/rails-20-scaffolding/ Langer http://luthdev.blogspot.com/2008/01/ruby-on-rails-2-Langer http://luthdev.blogspot.com/2008/01/ruby-on-rails-2-

activescaffold-and.htmlactivescaffold-and.html

Komt sebiet sowieso aan bodKomt sebiet sowieso aan bod

Page 10: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Depot Snelle TestDepot Snelle Test

New Project New Project Samples Samples Rechtermuis -> Set Configuration -> custom -> Ruby 1.8.6Rechtermuis -> Set Configuration -> custom -> Ruby 1.8.6 Voor Rails 2: verander in ConfigurationVoor Rails 2: verander in Configurationboot.rbboot.rb

Regel 55 en 65: vervang require_gem “rails.. door gem “rails..Regel 55 en 65: vervang require_gem “rails.. door gem “rails..

Maak database voor user mét paswoord (bv. ror – ror)Maak database voor user mét paswoord (bv. ror – ror) Manueel met phpmyadminManueel met phpmyadmin

Sla deze gebruiker op in Configuration – database.ymLSla deze gebruiker op in Configuration – database.ymL

Tabellen creeren : Migrate database to current versionTabellen creeren : Migrate database to current version Applicatie uitvoeren : rechtermuistoets Applicatie uitvoeren : rechtermuistoets Run Run

Test in je browser http://localhost:3000Test in je browser http://localhost:3000

Screencast Screencast http://www.rubyplus.org/episodes/19-AWDR-Depot-App-using-http://www.rubyplus.org/episodes/19-AWDR-Depot-App-using-Rails-2-version.htmlRails-2-version.html

Page 11: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Rails 2.0 weblog in 10 Rails 2.0 weblog in 10 minutenminuten

http://blogs.sun.com/divas/entry/creating_a_rails_2_0http://blogs.sun.com/divas/entry/creating_a_rails_2_0

Voorbereidend werkVoorbereidend werk

Stap 0: maak ER-schemaStap 0: maak ER-schema Stap 1: creeer applicatieStap 1: creeer applicatie Stap 2: pas database.yml aanStap 2: pas database.yml aan Stap 3: creeer db Stap 3: creeer db

““Run Rake Task > db > create Run Rake Task > db > create ””

Page 12: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

scaffold CRUDscaffold CRUD

Stap 4: creeer mini-applicatie Stap 4: creeer mini-applicatie (CRUD van één tabel uit ER)(CRUD van één tabel uit ER)

Generate -> scaffoldGenerate -> scaffold

Maakt Model – View – ControllerMaakt Model – View – Controller Veel feedback in het Output vensterVeel feedback in het Output venster

Stap 5: pas database aan (maak tabel van Stap 5: pas database aan (maak tabel van model)model) Migrate databaseMigrate database

Page 13: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Kijk even naar databaseKijk even naar database

title:string title:string attribuut title, type varchar(255) attribuut title, type varchar(255) id id int, autoincrement int, autoincrement

Altijd bij Rails modelAltijd bij Rails model Extra velden maken kan analoogExtra velden maken kan analoog

Bij scaffold opsomming zonder komma’s Bij scaffold opsomming zonder komma’s

Page 14: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Hoe? Hoe?

scaffold maakt ruby bestanden in scaffold maakt ruby bestanden in Database Migrations/migrate/… Database Migrations/migrate/…

up & down methodes om tabel te up & down methodes om tabel te maken en te verwijderenmaken en te verwijderen

Zet t.timestamps in commentaar #Zet t.timestamps in commentaar # Migrate databaseMigrate database

Eerst version 0 (drop) Eerst version 0 (drop) Dan version 1 Dan version 1

Page 15: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

AfsprakenAfspraken i.v.m. i.v.m. naamgevingnaamgeving

Model is enkelvoud (post)Model is enkelvoud (post) elk object van het type model bevat 1 elk object van het type model bevat 1

modelmodel Tabel is meervoud (posts)Tabel is meervoud (posts)

Want tabel bevat verschillende postsWant tabel bevat verschillende posts

Ruby-tag <% %>Ruby-tag <% %>

Page 16: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Klaar is kees?Klaar is kees?

Stap 6: kijk even in http://localhost:3000Stap 6: kijk even in http://localhost:3000 Nog niet veel te zienNog niet veel te zien

Ziet er zo standaard uitZiet er zo standaard uit Kijk wel eens bij “About your applications Kijk wel eens bij “About your applications

environment”environment” ‘‘t Is echt jouw applicatie!t Is echt jouw applicatie!

Probleem: geen basis-actie gedefinieerd in Probleem: geen basis-actie gedefinieerd in config/routes.rbconfig/routes.rb

=> mooie URL’s=> mooie URL’s

Page 17: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

““homepagina” makenhomepagina” maken

In het project, open het mapje “public” en In het project, open het mapje “public” en verwijder index.htmlverwijder index.html

Kijk opnieuw in http://localhost:3000Kijk opnieuw in http://localhost:3000 Routing error (da’s goed. index.html is weg!)Routing error (da’s goed. index.html is weg!)

Nieuwe route instellen in config/routes.rbNieuwe route instellen in config/routes.rb

En zie daar: een ‘volledige’ applicatie!En zie daar: een ‘volledige’ applicatie!

Page 18: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Let even op de urlsLet even op de urls

http://localhost:3001/postshttp://localhost:3001/posts http://localhost:3001/posts/newhttp://localhost:3001/posts/new

http://localhost:3001/posts/1http://localhost:3001/posts/1 http://localhost:3001/posts/1/edit http://localhost:3001/posts/1/edit

Page 19: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

AfsprakenAfspraken i.v.m. i.v.m. naamgevingnaamgeving

Model is enkelvoud (post)Model is enkelvoud (post) Models/post.rbModels/post.rb

Tabel is meervoud (posts)Tabel is meervoud (posts) Controller is ook meervoud (posts)Controller is ook meervoud (posts)

Want toont lijst van postsWant toont lijst van posts Eigenlijk Controllers/posts_controller.rbEigenlijk Controllers/posts_controller.rb

Page 20: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Database aanpassenDatabase aanpassen

Niet rechtstreeks prutsen in 001_create_posts.rbNiet rechtstreeks prutsen in 001_create_posts.rb Want ongedocumenteerd, en moeilijke roll backWant ongedocumenteerd, en moeilijke roll back

Wel via Rails zelfWel via Rails zelf

Naam in CamelCase, Naam in CamelCase, en moet eindigen met tabelnaam en moet eindigen met tabelnaam (met hoofdletter)(met hoofdletter)

Gevolgd door attributen van tabelGevolgd door attributen van tabel

Wordt vertaald naar add_body_to_posts.rbWordt vertaald naar add_body_to_posts.rb Migrate Database …Migrate Database …

Of open bronbestand en rechterklik “Run” in editorOf open bronbestand en rechterklik “Run” in editor

Page 21: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

View & Controller View & Controller aanpassenaanpassen

Ofwel zelfOfwel zelf De aangeraden methodeDe aangeraden methode

Ofwel nieuwe scaffoldOfwel nieuwe scaffold Generate Generate scaffold scaffold

post post title:string body:text --skip-migration title:string body:text --skip-migration + overwrite aanduiden+ overwrite aanduiden

Test en zie dat het werktTest en zie dat het werkt Merk op hoe het input-element in HTML Merk op hoe het input-element in HTML

afhankelijk is van het type van het attribuut in afhankelijk is van het type van het attribuut in het model het model

Page 22: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Declaratieve Declaratieve formuliervalidatieformuliervalidatie

Eigenlijk is verplichte aanwezigheid niks Eigenlijk is verplichte aanwezigheid niks van het formulier, maar van het modelvan het formulier, maar van het model cfr. null/not null in database-schemacfr. null/not null in database-schema

Validatie hoort dus thuis in model, niet in Validatie hoort dus thuis in model, niet in formulierformulier Open Models/post.rbOpen Models/post.rb Voeg toe aan klasse-definitieVoeg toe aan klasse-definitie

validates_presence_of :title, :bodyvalidates_presence_of :title, :body Test applicatie!Test applicatie!

Page 23: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Netbeans helpt!Netbeans helpt!

Je mag ook vp typen en op tab Je mag ook vp typen en op tab drukken)drukken)

Of typ validates_ en druk op ctrl-Of typ validates_ en druk op ctrl-spatiespatie

Oef: zorg er voor dat de titel minstens 5 lang Oef: zorg er voor dat de titel minstens 5 lang is is

Page 24: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

View aanpassenView aanpassen

In ViewsIn Views Layouts: algemene schema van de paginaLayouts: algemene schema van de pagina Posts: bevat “includes” die horen bij het model Posts: bevat “includes” die horen bij het model

“post”“post” Komt in de <%= yield %> van de layoutKomt in de <%= yield %> van de layout

Naam is nu .html.erb (vroeger rhtml)Naam is nu .html.erb (vroeger rhtml) OefeningOefening

Verander <% for post in @posts %> in Verander <% for post in @posts %> in <% for post in @posts.reverse %><% for post in @posts.reverse %>

Voeg toe Voeg toe <em> <%= link_to 'Permalink', :action => 'show', :id => post <em> <%= link_to 'Permalink', :action => 'show', :id => post %></em>%></em>

Voeg wat meer vormgeving toe!Voeg wat meer vormgeving toe!

Page 25: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Ondersteuning ER-schema Ondersteuning ER-schema (1)(1)

Maak model voor elke entiteitMaak model voor elke entiteit Vooral aandacht voor cardinaliteitenVooral aandacht voor cardinaliteiten 1-N-relatie : 1-kant 1-N-relatie : 1-kant has_manyhas_many N-kant & N- N-kant & N-

kant kant belongs_tobelongs_to 1-kant 1-kant class Post < ActiveRecord::Baseclass Post < ActiveRecord::Base

belongs_to :author belongs_to :authorendend

class Author < ActiveRecord::Baseclass Author < ActiveRecord::Base has_many: post has_many: postendend

Page 26: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Ondersteuning ER-schema Ondersteuning ER-schema (2)(2)

1-1-relatie: hangt af van waar je verwijzing naar 1-1-relatie: hangt af van waar je verwijzing naar andere tabel stockeertandere tabel stockeert Bv. in Author verwijzing naar Portfolio, dan in Author Bv. in Author verwijzing naar Portfolio, dan in Author

“belongs_to :portfolio” en in Portfolio “has_one :author” “belongs_to :portfolio” en in Portfolio “has_one :author” belongs_to :belongs_to :objectobject voegt attribuut voegt attribuut objectobject_id toe!_id toe! N-M-relatie : N-M-relatie : has_and_belongs_to_manyhas_and_belongs_to_many aan beide aan beide

kantenkanten Maakt tabel voor N-M-relatieMaakt tabel voor N-M-relatie

http://www.netbeans.org/kb/60/ruby/model.htmlhttp://www.netbeans.org/kb/60/ruby/model.html Comment toevoegen aan post Comment toevoegen aan post doen! doen!

Page 27: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Speciale relatie: acts_as_listSpeciale relatie: acts_as_list

Zorgt voor lus doorheen belongs_to elementZorgt voor lus doorheen belongs_to element Als meer dan één belongs_toAls meer dan één belongs_to

:scope => “ :scope => “objectobject_id”_id” Voegt gedrag to: een lusVoegt gedrag to: een lus

class Post < ActiveRecord::Baseclass Post < ActiveRecord::Base belongs_to :Author belongs_to :Author acts_as_list :scope => “author_id” acts_as_list :scope => “author_id” end end … … auteur = Author.find 1 auteur = Author.find 1 auteur.posts.each {…} auteur.posts.each {…}

Plus nog verschillende andere methodesPlus nog verschillende andere methodes

Page 28: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Ruby voor viewRuby voor view

Standaard view aanpassen Standaard view aanpassen Vooral declaratiefVooral declaratief

image_tag(“url”, …)image_tag(“url”, …) link_to ‘link-titel’, { :action => link_to ‘link-titel’, { :action =>

‘methode’, :id => 17}‘methode’, :id => 17} :confirm => “vraag”:confirm => “vraag”

Dikwijls lussenDikwijls lussen

Page 29: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

_partials _partials

““includes” om op verschillende includes” om op verschillende pagina’s te hergebruikenpagina’s te hergebruiken

Bestandje dat begint met underscoreBestandje dat begint met underscore

render :partial => 'name', :locals => render :partial => 'name', :locals => {:var1 => value, :var2 => value} {:var1 => value, :var2 => value}

Page 30: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Ruby lussenRuby lussen

<% for item in @items %><% for item in @items %>

… … (met (met itemitem))

<% end %><% end %>

<% @post do |f| %><% @post do |f| %>

… … (met (met f f ))

<% end %><% end %>

Page 31: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Ruby voor controllerRuby voor controller

Directe mapping tussen view-Directe mapping tussen view-bestand en controller-methodebestand en controller-methode

Methode vult @variabelen zodat view Methode vult @variabelen zodat view die kan gebruikendie kan gebruiken

Vooral findsVooral finds

Page 32: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Zoekfuncties Zoekfuncties (sql weg geabstraheerd)(sql weg geabstraheerd)

User .find(:first) User .find(:first) # => User object# => User object User .find(:all) User .find(:all) # => Array with all User # => Array with all User

objectsobjects User .find(3) User .find(3) # => User object with id 3# => User object with id 3

User .find(:all, conditions => User .find(:all, conditions => {:first_name => “Jamis”, :last_name => “Buck”}) {:first_name => “Jamis”, :last_name => “Buck”})

User .find(:all, conditions => “title like ‘d%’ ” )User .find(:all, conditions => “title like ‘d%’ ” ) Met variabelen: [] + ?Met variabelen: [] + ?

User .find(:all, [conditions => “title like ‘%?%’ ”, var1] )User .find(:all, [conditions => “title like ‘%?%’ ”, var1] )

Page 33: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Zoekfunctie (2)Zoekfunctie (2)

users = User .find(:all, users = User .find(:all, :conditions => [“users.id = :conditions => [“users.id =

taggings.taggable_id and users.age > ?”, 25],taggings.taggable_id and users.age > ?”, 25],:limit => 10,:limit => 10,:offset => 5,:offset => 5,:order => “users.last_name”,:order => “users.last_name”,:joins => “, tagggings”,:joins => “, tagggings”,:select => “count(*) as count, :select => “count(*) as count,

users.last_name”,users.last_name”,:group => “users.last_name”):group => “users.last_name”)

Page 34: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Ruby voor het modelRuby voor het model

Extra data members (naast db-dingen)Extra data members (naast db-dingen)attrattr_xxx @variabele_naam_xxx @variabele_naam

attr_accessor (rw), attr_read (r), attr_write (w)attr_accessor (rw), attr_read (r), attr_write (w) Extra methodesExtra methodes

def def methodemethode((param1, param2param1, param2) ) @var1 = param1@var1 = param1;;

end end

def to_string def to_string "Item #{@id} is a #{@type}: Price "Item #{@id} is a #{@type}: Price $#{@price}" $#{@price}" end end

Gebeurt eigenlijk niet zo (heel) veelGebeurt eigenlijk niet zo (heel) veel

Page 35: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Eigen formEigen form

Slide 209 en verderSlide 209 en verder

Page 36: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Javascript en Ajax Javascript en Ajax toevoegentoevoegen

http://www.onlamp.com/pub/a/onlamp/http://www.onlamp.com/pub/a/onlamp/2005/06/09/rails_ajax.html2005/06/09/rails_ajax.html

Ajax_scaffold_generatorAjax_scaffold_generator Slide 236 en verderSlide 236 en verder

Page 37: RubyOnRails_inleiding.ppt - Informatica Blok 2 docent: Kris.Aerts ...

WebTaVe 2007-’08WebTaVe 2007-’08Ruby On RailsRuby On Rails

Geavanceerde slidesGeavanceerde slides

http://www.slideshare.net/http://www.slideshare.net/peter_marklund/ruby-on-rails-101-peter_marklund/ruby-on-rails-101-presentation-slides-for-a-five-day-presentation-slides-for-a-five-day-introductory-courseintroductory-course