如何在Rails的路线[OPTIONS]?(How do you route [OPTIONS] i

2019-08-08 09:14发布

我正在用Rails REST服务。 这里是我的路线。

  resources :users
  match '/users', :controller => 'users', :action => 'options', :constraints => {:method => 'OPTIONS'}

我能[GET]我的用户。 我想更新我的用户,我得到一个错误:

ActionController::RoutingError (No route matches [OPTIONS] "/users/1"):

当我运行rake routes这里是我给出的路线:

    users GET    /users(.:format)          users#index
          POST   /users(.:format)          users#create
 new_user GET    /users/new(.:format)      users#new
edit_user GET    /users/:id/edit(.:format) users#edit
     user GET    /users/:id(.:format)      users#show
          PUT    /users/:id(.:format)      users#update
          DELETE /users/:id(.:format)      users#destroy
                 /users(.:format)          users#options {:method=>"OPTIONS"}

可能有人请告诉我如何解决我的路线,所以我可以做任何类型的REST调用的? 谢谢。

Answer 1:

match '/users' => "users#options", via: :options

也将是一个可能的途径,如果放在其他路线之前。



Answer 2:

我不能路线的要求,是我的原因match没有在它的用户ID。 我添加了一行:

match '/users/:id', :controller => 'users', :action => 'options', :constraints => {:method => 'OPTIONS'}

现在我可以将所有我的GET请求。



Answer 3:

如果你不想创建两个额外的线路/users/users/id ,你可以这样做:

match 'users(/:id)' => 'users#options', via: [:options]

在这种情况下, id成为可选,无论/users/users/id将同一路线做出回应。



文章来源: How do you route [OPTIONS] in Rails?