1

我在 Rails Routes 中指定了以下内容。我想在这条路线上同时允许GETPOST,但无论我尝试什么,它只允许 #index 操作,并且在请求 POST 时不访问 #create 操作。

match ':user_id/special_deals', to: 'special_deals#index'

我也试过这个:

match ':user_id/special_deals', to: 'special_deals#index', :via => [:get, :post]

我需要先指定用户 ID,因为有权访问 API 的人可以访问多个用户的信息。

4

1 回答 1

1

它完全按照您的要求工作。如果您想POST采取create行动,这里是您的路线配置:

match ':user_id/special_deals', to: 'special_deals#index', :via => [:get]
match ':user_id/special_deals', to: 'special_deals#create', :via => [:post]

有更简单的方法来编写这些,但我只是想使用您编写的相同格式。请查看本指南以了解它们。

如果您已经有一个User控制器,您可以编写更结构化的路由,例如:

resources :users do 
  resources :special_deals, :only => [:index, :create]
end

这将为 special_deals 创建路由,例如(#shows 将路由到的位置):

GET /users/:user_id/special_deals  #special_deals#index
POST /users/:user_id/special_deals  #special_deals#create
于 2013-04-07T06:39:51.630 回答