2013-10-16 10 views
6

Przeczytałem na the Rails Guides.Dodawanie niestandardowej trasy do aplikacji Rails

Chcę założyć są następujące trasy, które są kierowane do kontrolera „profile”:

GET profiles/charities - powinien wyświetlić wszystkie organizacje charytatywne
GET profiles/charties/:id powinien wyświetlić SPECYFICZNIE jałmużnę
GET profiles/donors - powinien wyświetlić wszystkie dawcy:
GET profiles/donors/:id - Powinien wyświetlić konkretnego dawcę

Utworzono kontroler profilu i dwie metody: organizacje charytatywne i dawcy.

Czy to wszystko, czego potrzebuję?

+0

Myślę, że robisz to źle, to są "źródła podrzędne", musisz stworzyć kontrolerów organizacji charytatywnych i darczyńców i wykonać trasę 'resource: charities, only: [: index,: show]' lub coś takiego w twój plik tras, wewnątrz zasobu profili –

Odpowiedz

12

Poniższa utworzy tras za to, co chcesz, ale będzie mapować je do :index i :show z CharitiesController i DonorsController:

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 

Kiedy jest bardziej odpowiedni do utworzenia niestandardowych tras, coś jak to zrobi :

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' 

Oto odpowiednie sekcje w przewodniku, że jechaliśmy przez:

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

organizacje charytatywne i darczyńcy zdają się być zagnieżdżone zasobów. Jeśli tak, to w pliku config/routes.rb trzeba mieć coś takiego,

resources :profiles do 
    resources :charities 
    resources :donors 
end 

ponieważ są zagnieżdżone zasobów, nie trzeba dwóch metod nazwanych charytatywne i darczyńców w kontrolerze profili. W rzeczywistości, w zależności od aplikacji, możesz potrzebować oddzielnych kontrolerów i/lub modeli dla organizacji charytatywnych i darczyńców.