2013-10-16 14 views
6

Ich habe auf the Rails Guides gelesen.Hinzufügen benutzerdefinierte Route zu Schienen app

Was ich will, einzurichten sind folgende Routen, die auf die ‚Profile‘ Controller geleitet werden:

GET profiles/charities - Sollten alle gemeinnützige Organisationen angezeigt
GET profiles/charties/:id sollte
GET profiles/donors eine specfic Charity-Anzeige - sollten alle anzeigen die Spender
GET profiles/donors/:id - Sollte einen bestimmten Spender anzeigen

Ich habe den Profil-Controller und zwei Methoden erstellt: Wohltätigkeitsorganisationen und Spender.

Ist das alles was ich brauche?

+0

Ich denke, Sie tun es falsch, das sind "subresources", müssen Sie eine Wohltätigkeitsorganisation und Spender-Controller erstellen und führen Sie eine Route 'Ressource: Wohltätigkeitsorganisationen, nur: [: Index,: Show]' oder so ähnlich in Ihre Routes-Datei in der Profilressource –

Antwort

12

Die folgende eingerichtet werden Routen für das, was Sie wollen, aber sie :index und :show von CharitiesController und DonorsController Karte:

namespace :profiles do 
    # Actions: charities#index and charities#show 
    resources :charities, :only => [:index, :show] 

    # Actions: donors#index and donors#show 
    resources :donors, :only => [:index, :show] 
end 

Wenn es angemessen ist, individuelle Routen einzurichten, wie etwas, das tun würde, :

get 'profiles/charities', :to => 'profiles#charities_index' 
get 'profiles/charities/:id', :to => 'profiles#charities_show' 
get 'profiles/donors', :to => 'profiles#donor_index' 
get 'profiles/donors/:id', :to => 'profiles#donor_show' 

Hier sind relevante Abschnitte in der Anleitung, die Sie durchlaufen wurden:

  1. Resource Routing: the Rails Default - Controller Namespaces and Routing
  2. Non-Resourceful Routes - Naming Routes
2

Die gemeinnützige Organisationen und Spender scheinen verschachtelt Ressourcen. Wenn ja, in Ihre config/routes.rb Datei sollten Sie so etwas wie haben,

resources :profiles do 
    resources :charities 
    resources :donors 
end 

Da diese Ressourcen verschachtelt sind, die Sie nicht brauchen die beiden Methoden mit dem Namen gemeinnützige Organisationen und Spendern in Ihre Profile-Controller. Abhängig von Ihrer App benötigen Sie möglicherweise separate Controller und/oder Modelle für Ihre Wohltätigkeitsorganisationen und Spender.

Verwandte Themen