2012-10-22 26 views
7

Jeśli masz zakres w pliku routes.rb takich jak:Czy istnieje sposób, aby uzyskać aktualny zasięg trasy?

scope "/account" do 
    resources :items 
end 

Jak można określić, czy bieżąca strona jest w sekcji „Konto”? Czy w sekcji "rachunki" rozważane są następujące elementy?

/account/items 
/account/item/1 
/account/item/1/edit 

wiem, że to jest możliwe poprzez wykonanie porównania ciągów zmiennych żądanie, ale był ciekaw, czy jest „Szyny” sposób określania tej informacji.

Dzięki za wszelkie dane wejściowe.

Odpowiedz

10

miałem ten sam problem właśnie teraz .. Co zrobiłem to dodać parametr do zakresu:

scope '/me', me_scope: true do 
    # ... 
end 

ten sposób można sprawdzić w sterowniku:

class ApplicationController < ActionController::Base 
    def me_scope? 
    params[:me_scope].eql? true 
    end 
end 

Nie najczystsze rozwiązanie, ale działa ..

+0

Należy zachować ostrożność, ponieważ ten coud wyrzuca różne testy 'ActionController :: UrlGenerationError's. – cseelus

+0

Ja również szukałem (i oczekiwałem) wypiekanego rozwiązania, ale wygląda na to, że działa wystarczająco łatwo. –

+0

@cseelus: Interesujące! Jak co? –

Powiązane problemy