2010-12-17 6 views
5

Ich bin auf der Suche nach einem Link, der ein Präfix an die benannte Route selbst hat. So etwas wie dies den Weg, um „/ alt/Rezepte“:Ruby on Rails: Wie prägt man benannte Routen?

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

Ich will nicht die routes.rb Datei berühren, aber ändern Sie die benannte Route mit dem Präfix angebracht. Ist das möglich und wie würdest du es richtig machen?

BEARBEITEN: Ich verwende Rails 3. Der Grund für das Hinzufügen des optionalen Präfixes ist, dass ich auch den normalen recipes_path verwenden möchte. Ich möchte also sowohl "Rezepte" als auch "/ alt/Rezepte" verwenden.

Antwort

11

Sie werden eine Menge Schmerzen bekommen, wenn Sie die routes-Datei nicht anfassen wollen, hauptsächlich weil Rails darauf hinweist, wenn es versucht herauszufinden, wohin Ihre Route geht. Ich weiß nicht, von einem anderen Weg, das zu tun, so ist hier der config/routes.rb Code, wenn Sie überzeugt sind, dass es eine gute Idee:

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

Nun, wenn Sie Route zu recipes_path zum Anschlag zu /old/recipes, obwohl dies möglicherweise nicht das ist, wonach Sie suchen. Wenn das der Fall ist, dann sollten Sie die as Option am Ende dieser scope einzuspannen:

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

In diesem Fall nun diese Route old_recipes_path wäre, noch zu /old/recipes Routing.

+0

Danke Ryan. Der Grund ist, dass ich das optionale Präfix hinzufügen möchte, dass ich auch den recipes_path verwende. Also brauche ich beide Pfade "/ Rezepte" und "/ alt/Rezepte". Habe ich kein Glück? – sjsc

+1

@sjsc: für beide haben Sie die Scoped-Eins und die Unscoped-Eins, mit der Sie recipes_path zuerst definieren möchten. –

+0

Danke Ryan :) Ich habe deine Follow-up komplett vermisst. Ich danke dir sehr. – sjsc