[ruby-it] Problemi viste - controller
Andrea Reginato
andrea.reginato a gmail.com
Sab 23 Ago 2008 11:39:12 CEST
>
>
> ActionController::Routing::Routes.draw do |map|
> map.resources :towns
> map.resources :events
> map.resources :users
>
> # Install the default routes as the lowest priority.
> map.connect ':controller/:action/:id'
> map.connect ':controller/:action/:id.:format'
> end
>
> Scusatemi se le mie domande sono un po "sempliciotte" ma sono un niubbo
> e non riesco ancora a muovermi bene in rails.
>
Non ci sono domande banali, quindi vai tranquillissimo.
Provo a spiegarti la storia un attimo. Quando utilizzi il comando
map.resources all'interno di routes ti crea di default una serie di named
routes per ogni controller, in modo da poter gestire la tua applicazione in
modo RESTful.
Prendendo in considerazione map.resources :users devi sapere che tra tutte
ti crea (in automatico) la named route per accedere all'azione show cosė
definita:
map.device "/users/:id", :action => "show", :conditions => { :method => :get
}
Ora tutte le chiamate che tu fai e che matchano questo pattern ti porteranno
sempre all'azione show del controller users. Nel tuo caso chiamando l'azione
eventi generi il link /users/event che matcha con la named route per
accedere a show. Infatti prende users come controller ed event come id (lo
vedi anche dal messaggio di errore)
La soluzione č usare l'opzione member su map.resources dicendogli che hai un
nuovo metodo. Quindi modifica map.resources :users come segue (non l'ho
testato).
map.resources :users, :member => {:event => :get}
Questo potrebbe suonarti un pochino complesso, lo so, perchč devi gestire
ogni metodo extra, ma ti forza a seguire the rails way. In poche parole non
dovresti mai aver bisogno di nuovi metodi (se non raramente) oltre ai 7
standard. Se ci sono ti consigliano di creare un nuovo controller. Non vale
sempre, ma molte volte č cosė.
Se ti interessa approfondire cerca "Restful routes customizations" o leggi
il capitolo 4 del librone "The Rails Way" che spiega abbastanza bene come
funziona il routing per RESTful Rails. Ci sono diversi aspetti che č meglio
conoscere.
Buon lavoro!
Maggiori informazioni sulla lista
Ml