2010-12-17 28 views
5

Estoy buscando generar un enlace que tenga un prefijo adjunto a la ruta nombrada. Algo como esto para mostrar la ruta "/ edad/recetas":Ruby on Rails: ¿Cómo prefieres las rutas con nombre?

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

no quiero tocar el archivo routes.rb, pero modificando la ruta denominada con el prefijo adjunto. ¿Es eso posible y cómo lo harías correctamente?

EDIT: Estoy usando Rails 3. La razón para agregar el prefijo opcional es que también quiero usar la ruta de recetas normal. Así que quiero usar "/ recetas" y "/ viejas/recetas".

Respuesta

11

Te vas a encontrar con mucho dolor si no quieres tocar el archivo de rutas, principalmente porque eso es a lo que Rails hará referencia cuando intente averiguar a dónde va tu ruta. No sé de otra manera de hacerlo, así que aquí está el/routes.rb código de configuración cuando se está convencido de que es una buena idea:

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

Ahora cuando camino a recipes_path irá a /old/recipes, aunque puede que esto no sea lo que buscas. Si ese es el caso, entonces es posible que desee tirar la opción as en el extremo de este scope:

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

En cuyo caso, esta ruta ahora habría old_recipes_path, siendo el enrutamiento a /old/recipes.

+0

Gracias Ryan. La razón es que quiero agregar que el prefijo opcional es que también estoy usando el camino de recetas también. Por lo tanto, necesito las rutas "/ recetas" y "/ viejas/recetas". ¿No tengo suerte? – sjsc

+1

@sjsc: para ambos tienen el ámbito uno y el ámbito no definido, con el que quiere que recipes_path vaya a definido primero. –

+0

Gracias Ryan :) Eché de menos por completo tu seguimiento. Muchas gracias. – sjsc