Comment renommer les routes REST dans L'URL?
Donner que j'ai un modèle appelé Apple
et il a un contrôleur ApplesController
, les routes sont:
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"}
Je voudrais garder tout le code le même, sauf que dans les URL, le " apple "serait remplacé par"car". Ainsi, l'URL /apples/new
deviendrait /cars/new
.
Y a-t-il un moyen de le faire tout en ne touchant aucun autre code dans l'application? (c'est-à-dire en interne dans l'application, c'est toujours apple
et ApplesController
)
J'ai essayé :as
option:
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"}
Mais cela n'a fait que changer le " nom " du route, pas L'URL (donc new_apple_path
est devenu new_car_path
, mais new_car_path
pointe toujours vers /apples/new
au lieu de /cars/new
)
2 réponses
Ce que vous voulez faire est de passer dans le :path
option
resources :apples, :path => "cars"
Cela remplace toutes vos références de route par /apples
à /cars
Voir: http://guides.rubyonrails.org/routing.html , Section 4.7 traduire les chemins
Pour ceux qui cherchent seulement à renommer la partie de la méthode d'assistance:
resources :apples, as: "cars"
C'est-à-dire que cela remplacerait apples_path
par cars_path
, mais en utilisant toujours le même contrôleur / action.