Devi pasticciare con il file "route.rb" di Rails?
-
03-07-2019 - |
Domanda
Non tocco mai route.rb
oltre a chiamare map.root
per impostare un percorso predefinito. Sono sempre stato contento di utilizzare gli URL del modulo ...
/controller/action/perhaps_an_id
e funziona benissimo.
Questo mi rende una persona cattiva? Mi sto perdendo qualcosa di assolutamente fantastico?
Cosa succede se provo ad adottare il design RESTful? Ciò significherebbe che devo modificare route.rb
o potrei continuare a ignorarlo piacevolmente?
(Ho cercato di leggere questo argomento in The Rails Way ma era insopportabile.)
Soluzione
Se generi le tue risorse con l'impalcatura predefinita, includerà anche il percorso riposante per te in route.rb.
Se non si utilizza l'impalcatura, il motivo per cui funziona è dovuto alle rotte predefinite in basso per impostazione predefinita:
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
Ho seguito che è consigliabile rimuoverle per le applicazioni di produzione e assicurarsi invece che siano esposte solo le risorse che devono essere esposte. Con Rails 2.2 puoi persino limitare i metodi RESTful da map.resources di:
map.resources :posts, :only => [:index, :show]
map.resources :comments, :except => [:edit]
Ci sono anche tantissime cose interessanti che puoi fare con risorse nidificate, percorsi denominati, ecc. Hanno molti esempi nei documenti ( http://www.railsbrain.com/api/rails-2.2.2/doc/index.html?a=M000255& name = risorse )
Altri suggerimenti
Potresti anche voler creare percorsi personalizzati con nome per il tuo dipartimento marketing (ad esempio: mycoolsite.com/free-trial) che vanno a controller e azioni specifici, ecc.
Ryan Bates ha una serie di screencast che illustrano alcune delle cose interessanti che puoi fare con i percorsi: http: //railscasts.com/tags/14
Non passare al design RESTful non ti rende una persona cattiva e se non senti la necessità di cambiare continua a scrivere le tue app nel modo 1.x.
La maggior parte degli sviluppatori di Rails ha adottato REST e sembra esserne molto felice. Non penso che qui sia necessario ripetere tutti gli argomenti PRO REST.
È necessario aggiungere una riga per risorsa al file delle rotte come:
map.resources :posts
Se dovessi andare RESTful, sì, dovresti modificare route.rb e aggiungere le tue risorse come,
map.resources :your_resource
o se hai risorse nidificate,
map.resources :people do |person|
person.resources :ideas do |idea|
ideas.resources :bad_ones
end
end