【发布时间】:2011-06-28 02:08:28
【问题描述】:
假设我有一个名为 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 中,“apple”将被“car”替换。因此,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)
【问题讨论】: