Give that I have a model called Apple and it has a controller ApplesController, the routes are:
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"} I would like to keep all code the same, except that in URLs, the "apple" would be replaced by "car". So, the URL /apples/new would become /cars/new.
Is there some way to do this while not touching any other code in the app? (i.e. internally in the app, it's still apple and ApplesController)
I tried :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"} But that only changed the "name" of the route, not the URL (so new_apple_path became new_car_path, but new_car_path still points to /apples/new instead of /cars/new)
What you will want to do is pass in the :path option
resources :apples, :path => "cars"
This replace all your route references with /apples to /cars
See: http://guides.rubyonrails.org/routing.html, Section 4.7 Translating Paths
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With