2011-02-16 10 views
27

Dar que tengo un modelo llamado Apple y tiene un controlador ApplesController, las rutas son:¿Cómo cambiar el nombre de las rutas REST en la URL?

resources :apples 

    apples GET /apples (.:format)   {:controller=>"apples ", :action=>"index"} 
    new_apple GET /apples /new(.:format)  {:controller=>"apples ", :action=>"new"} 
edit_apple GET /apples /:id/edit(.:format) {:controller=>"apples ", :action=>"edit"} 

me gustaría mantener todo el código de la misma, excepto que en las URL, la "manzana" sería reemplazado por "coche". Entonces, la URL /apples/new se convertiría en /cars/new.

¿Hay alguna manera de hacer esto sin tocar ningún otro código en la aplicación? (Es decir, internamente en la aplicación, sigue siendo apple y ApplesController)

Probé :as opción:

resources :apples, :as => "cars" 

    cars GET /apples (.:format)   {:controller=>"apples ", :action=>"index"} 
    new_car GET /apples /new(.:format)  {:controller=>"apples ", :action=>"new"} 
edit_car GET /apples /:id/edit(.:format) {:controller=>"apples ", :action=>"edit"} 

Pero eso sólo cambió el "nombre" de la ruta, no la URL (por lo new_apple_path convirtió new_car_path, pero new_car_path todavía señala /apples/new en lugar de /cars/new)

Respuesta

59

lo que se quiere hacer es pasar en la opción :path

resources :apples, :path => "cars"

Este reemplazar todas sus referencias de ruta con /apples a /cars

Ver: http://guides.rubyonrails.org/routing.html, Sección 4.7 Traducción Caminos

+1

Para completar, en Rails 2.3 habría sido: 'resources: apples,: as =>" cars "' –

+1

Soy nuevo en Rails (4), pero como solo cambia la ruta ayuda. Las URL generadas no cambian. : path => "xxx" cambia las URL – luigi7up

1

Para aquellos que buscan sólo para cambiar el nombre de la parte método de ayuda:

resources :apples, as: "cars" 

Es decir esto reemplazaría a apples_path con cars_path, pero seguiría usando el mismo controlador/acción.

Cuestiones relacionadas