Допустим, у меня есть модель с именем Apple
и контроллер ApplesController
, маршруты:
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"}
Я бы хотел, чтобы весь код оставался неизменным, за исключением того, что в URL-адресе «яблоко» будет заменено на «автомобиль». Таким образом, URL /apples/new
станет /cars/new
.
Есть ли способ сделать это, не касаясь какого-либо другого кода в приложении? (то есть внутри приложения, оно все еще apple
и ApplesController
)
Я попробовал :as
вариант:
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"}
Но это только изменило «имя» маршрута, но не URL-адрес (поэтому new_apple_path
стал new_car_path
, но new_car_path
по-прежнему указывает на /apples/new
вместо /cars/new
)