路由以匹配单数名称而不是':resources'生成的复数

use*_*052 2 resources routing ruby-on-rails ruby-on-rails-3

在我的RoR3应用程序的'config/routes.rb'中,我有这个代码

resources :users
Run Code Online (Sandbox Code Playgroud)

这样我才能去http://application.local/users/2.

无论如何我想匹配它http://application.local/user/2,但我不知道如何更改'routes.rb'来做到这一点.

有人能帮助我吗?

idl*_*ers 11

Rails确实具有单一资源,但它们适用于只有一个记录/ id被引用的路由(例如/ profile以显示登录用户的配置文件).

如果您需要普通资源(可以接受ID),那么您可以使用:path更改路径的外观:

resources :users, :path => "user"
Run Code Online (Sandbox Code Playgroud)

会给你这些路线:

    users GET    /user(.:format)                    {:controller=>"users", :action=>"index"}
          POST   /user(.:format)                    {:controller=>"users", :action=>"create"}
 new_user GET    /user/new(.:format)                {:controller=>"users", :action=>"new"}
edit_user GET    /user/:id/edit(.:format)           {:controller=>"users", :action=>"edit"}
     user GET    /user/:id(.:format)                {:controller=>"users", :action=>"show"}
          PUT    /user/:id(.:format)                {:controller=>"users", :action=>"update"}
          DELETE /user/:id(.:format)                {:controller=>"users", :action=>"destroy"}
Run Code Online (Sandbox Code Playgroud)