我正在尝试在我的 Rails 3.2.3 应用程序中设置一个子目录来服务 API 请求:http://example.com/api
我创建了一个目录,如:app/controllers/api/
我遵循实现命名空间控制器的标准约定:
module Api
class GroupsController < ApplicationController
# RESTful verbs implemented here
end
end
我已经设置了这样的命名空间路由:
namespace :api, defaults: {format: 'json'} do
resources :groups
end
但是请求http://example.com/api/groups.json
导致以下异常:
ActionController::RoutingError (wrong constant name groups):
app/controllers/api/groups_controller.rb:2:in `<module:Api>'
app/controllers/api/groups_controller.rb:1:in `<top (required)>'
如您所见,这里的名称“组”似乎无效,因为它是小写的。我不知道这是从哪里来的。
我在几个地方读到了 right-aws gem 的一个版本破坏了 String#camelize 方法并导致了类似的错误。但是我已经确认这个 gem 不存在于我的 Rails 应用程序的堆栈中。
一段时间以来,我一直在为此猛烈抨击。有没有其他人遇到过这个问题?
编辑:粘贴输出$ rake routes
:
root / welcome#index
api_groups GET /api/groups(.:format) api/groups#index {:format=>"json"}
POST /api/groups(.:format) api/groups#create {:format=>"json"}
new_api_group GET /api/groups/new(.:format) api/groups#new {:format=>"json"}
edit_api_group GET /api/groups/:id/edit(.:format) api/groups#edit {:format=>"json"}
api_group GET /api/groups/:id(.:format) api/groups#show {:format=>"json"}
PUT /api/groups/:id(.:format) api/groups#update {:format=>"json"}
DELETE /api/groups/:id(.:format) api/groups#destroy {:format=>"json"}