在routes.rb
map.resources :users
生成的路线可能是这样的:
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"}
有没有办法将POST /users
映射到{:controller=>"users", :action=>"create"}
的默认HTTP方法更改为用于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"}
我知道这对于RESTful路由是不正确的,我只是想知道是否可以更改这些路由使用的HTTP方法。
答案 0 :(得分:2)
您可以显式添加路由以接受带有PUT的/users
来创建用户,但它不会替换现有的POST路由。
map.connect '/users(.:format)',
:controller => 'users',
:action => 'create',
:conditions => { :method => :put }
您还可以添加:member => { :create => :put }
添加create_users PUT /users/create(.:format) {:action=>"create", :controller=>"users"}
来创建用户的新路线,这将产生如下路线:
{{1}}
但我很欣赏这并不能完全解决你所要求的问题!
答案 1 :(得分:1)
定义
map.resources :users, :member =>{:create => :put}
将为:users
执行此操作。我不确定默认覆盖,比如动作控制器中的方法名称,如:
config.action_controller.resources_path_names = { :new => "create",
:edit => "change" }
您可能一直在问这个问题。