2012-07-06 16 views

risposta

14

In sostanza, le risorse di routing si trovano quando le risorse danno capacità di azione a un controller.

http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use

Se una delle risorse pluralizzato è usato come un modo per gestire le richieste generiche su qualsiasi elemento, quindi una risorsa singolare è un modo di lavorare sulla voce corrente a portata di mano.

Quindi, in altre parole, se ho una raccolta di mele, per recuperare una mela specifica, dovrei dire al router "Mele" quale mela recuperare tramite l'invio dell'ID della mela. Se ho già una mela, non è necessario un ID.

Avviso le differenze tra i due, cercando in quali azioni (o delle vie) hanno:

  • risorse: Indice, nuova, creare, visualizzare, modificare, aggiornare, distruggere
  • risorsa: nuova, creare, visualizzare, modificare, aggiornare, distruggere

Nel tuo esempio:

  1. Il controller "geocoder" è una risorsa singolare che è possibile utilizzare per modificare, creare, aggiornare, ecc.
  2. Il controller "post", è una risorsa plurale che gestirà i post generici in ingresso che è possibile indicizzare, modificare, creare..ecc
+1

La mia confusione: che cosa è il punto nella creazione di risorse singolari; diciamo che abbiamo definito 'resource: geocoder'; vuol dire che avremo un singolo record 'geocoder' in un intero' tavolo' chiamato 'geocoder '? – illusionist

+2

Nel link all'articolo (che è stato aggiornato molto tempo fa da quando ho postato questo), in realtà hanno dato un buon esempio. Una risorsa singolare chiamata/profile (anziché/profile: id), sarebbe utile per mostrare sempre il profilo dell'utente attualmente connesso. Quindi un geocoder singolare potrebbe appartenere alla posizione di un utente corrente, dove i geocoder plurali potrebbero appartenere a una raccolta di luoghi vicini. Spetterà a te se vuoi includere il tuo geocode in quella raccolta. – sksallaj

8

http://guides.rubyonrails.org/routing.html#singular-resources

A volte, si dispone di una risorsa che i clienti cercano sempre senza riferimento a un ID. Ad esempio, ti piacerebbe/profilo per mostrare sempre il profilo dell'utente attualmente connesso. In questo caso, è possibile utilizzare una risorsa singolare per mappare/profilo (piuttosto che/profilo /: id) all'azione dello spettacolo .

Un buon modo per vederlo è che la risorsa non ha un'azione indice, dal momento che si suppone che sia solo una.

3

penso solo alla vista indice.

inoltre sono stati segnalati problemi con il routing con l'helper di risorse e gli helper di moduli. Personalmente, io uso la sintassi:

resources :someresource, except: :index 

al fine di evitare il reported bugs.

4

Risorse Singular:

A volte, si dispone di una risorsa che i clienti cercano sempre senza riferimento a un ID. Ad esempio, ti piacerebbe che /profile mostrasse sempre il profilo dell'utente attualmente connesso.

Oppure, normalmente l'utente-in registrati attualmente appartiene ad una singola organizzazione, per così goto la sua pagina di profilo/organizzazione non ci possono essere due percorsi

#1 
/organizations/:id 

#2 
/organization #simply 

Qui, l'attuazione in seguito ha più senso; non è? si ottiene l'oggetto organizzazione dall'associazione

# in organizations#show 
@organization = current_user.organization 

Per definire tale risorsa singolare si utilizza resource metodo: Esempio

# in routes.rb 
resource :organization 

crea sei percorsi diversi nella vostra applicazione, tutta la mappatura al controller Organizzazioni:

enter image description here

considerando che si definiscono più risorse utilizzando resources Metodo

resources :organizations 

enter image description here

Problemi correlati