Joh*_*uff 5 rest resources routing ruby-on-rails
给出下面的一行代码 routes.rb
map.resources :users
Run Code Online (Sandbox Code Playgroud)
生成的路由可能是这样的:
users GET /users(.:format) {:controller=>"users", :action=>"index"}
POST /users(.:format) {:controller=>"users", :action=>"create"}
new_user GET /users/new(.:format) {:controller=>"users", :action=>"new"}
edit_user GET /users/:id/edit(.:format) {:controller=>"users", :action=>"edit"}
user GET /users/:id(.:format) {:controller=>"users", :action=>"show"}
PUT /users/:id(.:format) {:controller=>"users", :action=>"update"}
DELETE /users/:id(.:format) {:controller=>"users", :action=>"destroy"}
Run Code Online (Sandbox Code Playgroud)
有没有办法将POST /users映射的默认HTTP方法更改{:controller=>"users", :action=>"create"}为用于PUT替代的HTTP方法?
rake routes 然后生成这样的东西:
users GET /users(.:format) {:controller=>"users", :action=>"index"}
PUT /users(.:format) {:controller=>"users", :action=>"create"}
new_user GET /users/new(.:format) {:controller=>"users", :action=>"new"}
edit_user GET /users/:id/edit(.:format) {:controller=>"users", :action=>"edit"}
user GET /users/:id(.:format) {:controller=>"users", :action=>"show"}
PUT /users/:id(.:format) {:controller=>"users", :action=>"update"}
DELETE /users/:id(.:format) {:controller=>"users", :action=>"destroy"}
Run Code Online (Sandbox Code Playgroud)
我知道这对于RESTful路由是不正确的,我只是想知道是否可以更改这些路由使用的HTTP方法.
您可以显式添加一个路由来接受/usersPUT 来创建用户,但它不会替换现有的 POST 路由。
map.connect '/users(.:format)',
:controller => 'users',
:action => 'create',
:conditions => { :method => :put }
Run Code Online (Sandbox Code Playgroud)
您还可以添加一条用于创建用户的新路由,:member => { :create => :put }这将导致如下所示的路由:
create_users PUT /users/create(.:format) {:action=>"create", :controller=>"users"}
Run Code Online (Sandbox Code Playgroud)
但我很高兴这并不能完全解决你所问的问题!