2011-06-19 21 views
8

Nie mogłem znaleźć niczego tutaj ani w innym miejscu, które obejmowałoby zarówno ograniczenie tras zasobów, jak i dodanie dodatkowych tras REST w trybie innym niż REST w Rails 3. Jest to prawdopodobnie bardzo proste, ale każdy przykład lub wyjaśnienie, które napotkałem, dotyczy tylko jednego przypadku nie w tym samym czasie.Ograniczanie tras zasobów i dodawanie dodatkowych tras innych niż RESTful w Railsach 3

Oto przykład tego, co robiłem w Rails 2:

map.resources :sessions, :only => [:new, :create, :destroy], :member => {:recovery => :get}

Dość prosty, chcemy tylko 3 z 7 tras relaksującego bo inni nie mają sensu dla tego zasobów, ale chcemy też dodać inną trasę, która jest używana do odzyskiwania konta.

teraz od tego, co wnoszę, wykonując jedną z tych rzeczy jest bardzo prosta, a także:

resources :sessions, :only => [:new, :create, :destroy]

Podobnie jak w Rails 2. I:

resources :sessions do 
    member do 
    get :recovery 
    end 
end 

So, jak mogę połączyć te dwa? Czy nadal mogę korzystać ze starego sposobu Rails 2? Czy istnieje preferowany sposób robienia tego w Rails 3?

Odpowiedz

15

można przekazywać argumenty i blok do resources:

resources :sessions, :only => [:new, :create, :destroy] do 
    get :recovery, :on => :member 
end 

i przetestować go z rake routes.

+0

My 'routes.rb' deklaruje' Zasoby: sprawa: tylko => [: pokaż] rozumiem: foo,: na =>: członek end' i 'grabie routes' daje' foo_thing GET/anything/foo(.:format) rzecz # foo' plus 'rzecz GET/anything(.: format) thing # show'. Link do 'rzeczy' działa, ale jeśli kod nawiguje po łączu' foo_thing', pojawia się ekran "Routing Error" Railsów, który mówi: "Brak trasy odpowiada [GET]"/foo_thing "' - chociaż jeśli piszę '. ../ thing/foo' na pasku URL, działa. (Ścieżka 'foo_thing' działa z wewnątrz kodu tylko wtedy, gdy' routes.rb' ma linię 'get 'foo_thing' => 'thing # foo''). Jakieś pomysły na temat tego, co robię źle? –

+0

Rozszerzyłem moje pytanie powyżej i napisałem [to pytanie] (http://stackoverflow.com/questions/17597382/helper-path-generated-by-rails-based-on-a-ustom-restual-method-fails), więc jeśli masz odpowiedź, czy mógłbyś pójść do niej? Kthxbye. –

5

Należy pracuje całkiem dużo jak ten

resources :sessions, :only => [:new, :create, :destroy] do 
    member do 
    get :recovery 
    end 
end 

Istnieje nawet krótsza droga, jak proponuje coreyward.

Sprawdź prowadnice szyn "Rails Routing from the Outside In". Mogę również polecić "The Rails 3 Way" autorstwa Obie Fernandeza, który otrzymał 2 całkiem dobre rozdziały dotyczące Routingu i RESt.

Cheers

+0

Masz literówkę na "zasoby". ;) – coreyward

+0

Usuń przecinek przed 'do' na końcu pierwszej linii, a to będzie poprawne. –

Powiązane problemy