Domanda

Ho letto attraverso la documentazione rotaie per Routing , Risorse riposante , ed il UrlHelper , e ancora non capisco le best practice per la creazione di percorsi complessi / nidificato. L'esempio su cui sto lavorando ora è per gli eventi, che has_many RSVP. Così un utente sta guardando attraverso un elenco di eventi, e registrare i clic, e passa attraverso un processo di registrazione, ecc voglio gli URL per assomigliare a questo:

/events
/events/123 # possible without title, like SO
/events/123/my-event-title # canonical version
/events/my-category/123/my-event-title # also possible like this
/events/123/my-event-title/registration/new
... and all the restful nested resouces.

La domanda è, come faccio a realizzare questo con la quantità minima di codice?

Ecco quello che ho attualmente:

map.resources :events do |event|
  event.resources :rsvps, :as => "registration"
end

Questo mi ottiene questo:

/events/123/registration

Qual è il modo migliore per realizzare gli altri 2 vie?

/events/123/my-event-title # canonical version
/events/my-category/123/my-event-title # also possible like this

Dove my-category è solo un array di 10 tipi possibili l'evento può essere.

Ho modificato Event#to_param di tornare "#{self.id.to_s}-#{self.title.parameterize}", ma preferirei avere /id/title con tutta la canonica-ness

È stato utile?

Soluzione

Perché gli URL SEO-friendly che descrivi non sono conformi al modo in cui le rotaie genera percorsi RESTful, è necessario utilizzare percorsi regolari per impostare questi in su. Ad esempio:

map.show_event 'events/:id/:event_title', :controller => 'events', :action => 'show'

Non si sentono che è necessario utilizzare i percorsi RESTful generate automaticamente per assolutamente tutto nella vostra applicazione. Non è sempre una buona misura per quello che stai cercando di fare. Anche le rotaie di routing guida dice così:

  

Mentre il routing RESTful è diventato il   Guide standard, ci sono ancora un sacco   dei luoghi in cui il regolare più semplice   di routing funziona bene. Si può anche mescolare   i due stili all'interno di una singola   applicazione. In generale, si dovrebbe   preferire il routing RESTful, quando possibile,   perché renderà le parti del vostro   applicazione più facile da scrivere. Ma   non c'è bisogno di cercare di calzascarpe   ogni ultimo pezzo della tua applicazione   in un quadro RESTful se questo non è   una buona misura.

Altri suggerimenti

Avete guardato il Rails instradamento guida ? E 'ottenuto un sacco di informazioni per farti capire il router e include una sezione sulla risorse annidati .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top