ruby-on-rails-3 - 如何在URL中重命名REST路由?

标签 ruby-on-rails-3 routes

假设我有一个名为Apple的模型,并且有一个 Controller 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

有什么方法可以在不触摸应用程序中任何其他代码的情况下执行此操作? (即在应用内部,它仍然是appleApplesController)

我尝试了: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)

最佳答案

您要做的就是传递:path选项
resources :apples, :path => "cars"
这会将您所有的路线引用替换为/apples/cars
请参阅:http://guides.rubyonrails.org/routing.html,第4.7节翻译路径

关于ruby-on-rails-3 - 如何在URL中重命名REST路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5012255/

相关文章:

ruby-on-rails - 嵌套资源路由助手不起作用

ssl - 如何通过 AWS "Application Load Balancer"将 SSL 流量路由到 EC2 实例

ruby-on-rails - 删除文件后没有该文件或目录,ruby on Rails

ruby - 设计:从根路径重定向到 users/sign_in 时不显示 "unauthenticated"flash 消息

ruby-on-rails - rails 上的 ruby 。 Unicode 路由

PHP 正则表达式匹配字符串中的组

ruby-on-rails - 递归地将包含非UTF字符的散列转换为UTF

ruby-on-rails - Rails 3 应用程序/用户设置最佳实践?

ruby-on-rails - Rails 3 中的 Kaminari 分页错误

routes - Angular2 路由参数需要数据类型