Zab*_*bba 32 routes ruby-on-rails-3
给我一个名为的模型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"}
Run Code Online (Sandbox Code Playgroud)
我想保持所有代码相同,除了在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"}
Run Code Online (Sandbox Code Playgroud)
但这只改变了路线的"名称",而不是URL(所以new_apple_path变成了new_car_path,但new_car_path仍然指向/apples/new而不是/cars/new)
rai*_*ive 65
你想要做的是传递:path选项
resources :apples, :path => "cars"
这将用/applesto 替换所有路由引用/cars
请参阅:http://guides.rubyonrails.org/routing.html,第4.7节"翻译路径"