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.