2010-12-17 8 views
5

Czekam na wygenerowanie łącza, które ma prefiks dołączony do nazwanej trasy. Coś takiego, aby wyświetlić ścieżkę „/ stary/recepty”:Ruby on Rails: Jak prefiksować nazwane trasy?

recipes_path(:prefix => "old/") # the correct way should show "/old/recipes" 

Nie chcę dotykać pliku routes.rb, ale modyfikacji o nazwie trasę z prefiksem załączeniu. Czy to możliwe i jak zrobiłbyś to poprawnie?

EDYCJA: Używam Rails 3. Powodem dodania opcjonalnego prefiksu jest również użycie normalnej ścieżki recipes_path. Dlatego chcę używać zarówno "/ recipes" i "/ old/recipes".

Odpowiedz

11

Jeśli nie chcesz dotykać pliku trasy, natkniesz się na wiele problemów, głównie dlatego, że Rails odniesie się, gdy spróbuje ustalić, gdzie idzie twoja trasa. Nie znam innego sposobu, aby to zrobić, więc oto config/routes.rb kod gdy jesteś przekonany, że to dobry pomysł:

scope :path => "old" do 
    resources :recipes 
end 

Teraz, kiedy trasa do recipes_path to pójdzie do /old/recipes, chociaż może nie być tym, na co masz ochotę. Jeśli o to chodzi, to może warto rzucić opcję as na koniec tego scope:

scope :path => "old", :as => "old" do 
    resources :recipes 
end 

W takim przypadku, ta droga będzie teraz old_recipes_path wciąż routing do /old/recipes.

+0

Dzięki Ryan. Powodem jest to, że chcę dodać opcjonalny przedrostek, że również używam ścieżki recipes_path. Potrzebuję więc ścieżek "/ recipes" i "/ old/recipes". Czy mam pecha? – sjsc

+1

@sjsc: dla obu mają zasięg o zasięgu i nieskryty, z tym, który ma być ścieżką recipes_path, aby przejść do zdefiniowanego jako pierwszy. –

+0

Dziękuję Ryan :) Całkowicie przegapiłem twoją obserwację. Dziękuję bardzo. – sjsc