Come molti di voi saprete sto cercando di imparare ror, infatti sto
facendo molte domande in questi giorni.
Vorrei approfittare di nuovo della vostra cortesia per cercare di capire
meglio il funzionamento di una cosa
Ho creato un semplice blog usando il comando automatico scaffold e stavo
spulciando il codice per capire bene come funziona.
Non mi è chiaro però come alcune viste interagiscono con alcune azioni
del controller.
Ad esempio nella pagina dove vengono mostrati tutti i post del blog câè
un link chiamato âshowâ. Cliccando su di esso viene mostrata una pagina
con solo quel post. Il funzionamento è chiaro: il link manda tramite GET
lâid del post che viene mostrato dalla funzione show del controller.
Da qua capisco subito che âpostsâ è il controller mentre â1â è lâid del
commento.
la cosa che non capisco è: come fa ror a capire che quella richiesta
deve andare nellâazione show del controller? Cioè io mi sarei aspettato
un link tipo:
La stessa cosa succede anche con la vistra new, che rimanda allâazione
create del controller senza aver specificato da nessuna parte un
riferimento ad essa !
Sono quelle piccole cose che mi frenano moltoâŚquando imparo un nuovo
linguaggio voglio sempre avere ben chiaro cosa sta succedendo Se non
capisco queste basi non posso andare avanti
Da qua capisco subito che âpostsâ il controller mentre â1â lâid del
commento.
la cosa che non capisco : come fa ror a capire che quella richiesta
deve andare nellâazione show del controller? Cio io mi sarei aspettato
un link tipo:
Eâ la convenzione REST:
Ad ogni verbo HTTP corrisponde una azione CRUD del modello sottostante.
La stessa cosa succede anche con la vistra new, che rimanda allâazione
create del controller senza aver specificato da nessuna parte un
riferimento ad essa!
ma questo accade solo se non specifico lâazione del controller? Voglio
dire, posso specificare anche manualmente in che azione reindirizzare la
chiamata?
Da: [email protected]
A: [email protected]
Cc:
Data: Tue, 06 Dec 2011 17:16:06 +0100
Oggetto: [ruby-it] Non capisco questa magiaâŚ
Se guardi nel file routes.rb vedrai qualcosa del tipo:
resources :posts
quello un metodo che, dietro le quinte, genera una serie di routes tra
cui quella per /post/:id
More athttp://edgeguides.rubyonrails.org/routing.html
â
Andrea D.
commento.
create del controller senza aver specificato da nessuna parte un
riferimento ad essa !
Sono quelle piccole cose che mi frenano moltoâŚquando imparo un nuovo
linguaggio voglio sempre avere ben chiaro cosa sta succedendo Se non
capisco queste basi non posso andare avanti
ma questo accade solo se non specifico lâazione del controller? Voglio
dire, posso specificare anche manualmente in che azione reindirizzare la
chiamata?
S ma, come regola generale, non farlo. Tieniti REST pi che puoi, ne
guadagni in salute e le tue app restano semplici.
In generale, usa le named route restful, fai link, redirect etc a
oggetti o a, che so, posts_url, new_post_url, etc.
Se proprio qualche volta devi, puoi aggiungere altre action non rest
per cose molto specifiche, ma anche in quel caso usa la sintassi che
trovi gi consigliata nei commenti dentro config/routes.rb:
Puoi, definendo le routes nel file routes.rb (o route.rb? non ricordo)
:method => âpostâ (se ricordo bene)
la cosa diventa utile se devi mappare azioni specifiche anche in formati
macchina com XML. IO per esempio lâho usate per aggiornare un web server
con una call XML RPC da una macchina industriale. In questi caso ho
deciso di mappare lâazione in POST (creavo un nuovo record per ogni XML
RPC dalla macchina).
Insomma eâ configurabile
.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.