我正在使用 Rocket_Pants gem 为我现有的 Rails 应用程序提供 API 访问。我有两个同名但存储在不同位置的控制器:
我将处理 HTTP 请求的控制器存储在 中app/controllers
,将处理 API 调用的控制器存储在 的子目录API
中app/controllers
。
我的路线中有以下内容:
# HTTP routing
resources :posts do
collection do
get 'search'
end
end
# API routing
api :version => 1 do
resources :posts, :only => [:index, :show]
resources :posts do
collection do
get 'search'
end
end
end
但是,当我rake routes
,我得到:
GET /:version/posts/search(.:format) posts#search {:version=>/(1)/, :format=>"json"}
GET /:version/posts(.:format) posts#index {:version=>/(1)/, :format=>"json"}
GET /:version/posts/:id(.:format) posts#show {:version=>/(1)/, :format=>"json"}
这意味着我的 API 路由实际上是指向 http 控制器而不是 API 控制器。我怎样才能将我的 API 路由指向API/posts#search
呢?