Url Routes Rails

Post on 06-Dec-2014

1.997 views 0 download

description

come collegare url con il codice rails

Transcript of Url Routes Rails

URL e routes

Si riferisce al testo che indica l'indirizzo di un sito web comprensivo di tutti gli elementi che lo compongono cioe' (http://www.nomedi-dominio.estensione) Va digitato nell'apposita barra del browser, e quest'ultimo individuera' e carichera' il sito in questione.

Nel web navighiamo su una successione di pagine.

Digitiamo l’url o un link , il browser richiede al server la pagina

indirizzata dall’ url o dal link Il web server restituisce, come risposta al

browser, la pagina richiesta sottoforma di codice html

Il web ha al suo centro la pagina Questa interpretazione del web risale ai

giorni in cui esso consisteva quasi interamente di documenti

Il documento era la risorsa primaria del web

L’http era un modo di richiedere questi documenti

Il web è evoluto in maniera significativa, ma rimane popolare questa visione centrata sulla pagina

molti strumenti disponibili per costruire i siti web e le applicazioni di rete ancora ruotano attorno a questa idea di pagina.

Se il sito è fatto solo di pagine statiche, ossia di pagine con il solo codice html,

Allora per caricare la pagina che ci interessa, la digitiamo nella barra degli indirizzi del

browser,scrivendo l’url con il nome del sito e il pathname della pagina html,

www.studentefelice.com/felice.html O se la pagine felice.html si trova nella cartella

“buoni” della root, scriveremo l’indirizzo come www.studentefelice.html/buoni/felice.html

Le pagine web dinamiche sono caratterizzate dal mescolare il codice html con il codice di un linguaggio di programmazione.

Ciò consente di usare i costrutti di iterazione e di decisione, non disponibili

in maniera nativa nel html di usare le variabili

L’uso di queste strutture di controllo e di variabili consente di ottenere pagine web con dati sempre diversi, letti da un database ad esempio, la medesima pagina web potrebbe mostrarmi le

calzature sportive per donna oppure le calzature sportive per uomo

di conseguenza la medesima pagina appare, nei due distinti casi, diversa, perché in essa appaiono differenti dati.

Per distinguere le pagine statiche da quelle dinamiche, si suole aggiungere a quelle dinamiche un suffisso che indica il linguaggio di programmazione mescolato con l’html

Ad esempio nel linguaggio php, la pagina si chiama felice.php; nel linguaggio active server pages, la pagina si

chiama felice.asp Nel linguaggio java server page, la pagina si chiama

felice.jsp

Rails ha un diverso approccio Abbraccia il design pattern MVC Ha una natura orientata agli oggetti Invece di identificare pagine web, Rails ha a

che fare con gli Oggetti Gli oggetti sono le Risorse della applicazione di

Rails Tipicamente Rails esegue della azioni su questi

oggetti create, edit, delete, show sono tipiche azioni

Ciascuna azione nel nostro controllore restituirà un certo tipo di risposta al browser

Un’applicazione web, nella sua forma più semplice, accetta una richiesta di un browser, la elabora ed invia una risposta

La prima domanda alla quale dobbiamo rispondere è: L’applicazione come fa a sapere che cosa deve fare con

la richiesta ? Ad esempio: un’applicazione di vendita online riceverà

una richiesta di mostrare un catalogo di prodotti, di aggiungere gli acquisti al carrello della spesa, etc… etc…

Come fa l’applicazione ad associare ciascuna richiesta all’appropriato codice che la deve elaborare?

Nel PHP, la richiesta è di una pagina php, che già ha, al suo interno, il codice php che deve elaborare la richiesta medesima.

Invece Rails aderisce al pattern Model Controller View.

La pagina web corrisponde a grandi linee alla View

Ma ,in Rails, il codice che deve elaborare la richiesta per generare la view si trova nel Controller!!

In Rails dobbiamo associare l’URL del web con il codice della nostra applicazione

A Rails occorre una regola che gli dica quale codice eseguire per un dato URL

Le regole che Rails usa per mappare i percorsi URL al codice sono chiamate routes

Le routes sono definite nel file config/routes.rb

route

route

Il file routes.rb contiene le regole di routing Il contenuto di default, ignorando i

commenti è il seguente: ActionController::Routing.draw do |map|

map.connect ‘:controller/:action/:id’

map.connect ‘:controller/:action/:id.:format’

end

Un route è costituito da più componenti, separati da uno slash /

Quando viene digitato un URL, esso viene confrontato con ciascun route a partire dal primo della lista, finchè si trova un route la cui struttura combacia con l’URL

Ad esempio, se il nostro URL è http://example.com/meetings/show/10 esso risulta costituito da tre diversi componenti:

meetings, show, 10 Questi componenti combaciano con :controller, :action,

:id del nostro route Per cui rails crea un hash (array con chiave) così fatto: params={:controller=>”meetings”,

:action =>”show”,:id =>”10” }

Rails invocherà il metodo show del controllore “meetings”, con un parametro id=10.

Ad esempio, se il nostro URL è: http://localhost:3000/ads/3 La struttura dell’url è fatta da due soli

componenti e quindi non combacia con nussuna regola di default di routes.rb

Dobbiamo pertanto aggiungere una nuova regola di routing:

map.connect ‘/ads/:id’, :controller=>’ads’, :action=>’show’