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)

28
demandé sur Zabba 2011-02-16 06:31:28

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

59
répondu raidfive 2011-02-16 06:31:25

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.

1
répondu Fellow Stranger 2017-03-12 17:17:54