我正在尝试向我的APP添加一个简单的JSON API
#routes.rb
namespace :api, :format => :json do
namespace :v1 do
resources :users
end
end
#controllers/api/v1/users_controller.rb
class Api::V1::UsersController < ApplicationController
respond_to :json
def index
respond_with User.all
end
end
#inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'API'
end
rake routes
给了我以下内容:
api_v1_users GET /api/v1/users(.:format) api/v1/users#index
POST /api/v1/users(.:format) api/v1/users#create
new_api_v1_user GET /api/v1/users/new(.:format) api/v1/users#new
edit_api_v1_user GET /api/v1/users/:id/edit(.:format) api/v1/users#edit
api_v1_user GET /api/v1/users/:id(.:format) api/v1/users#show
PATCH /api/v1/users/:id(.:format) api/v1/users#update
PUT /api/v1/users/:id(.:format) api/v1/users#update
DELETE /api/v1/users/:id(.:format) api/v1/users#destroy
当我访问http://localhost:3000/api/v1/users
时,我收到以下错误:
API :: V1 :: UsersController中的LoadError #index无法自动加载 常量API :: V1 :: UsersController,预期 /path/to/app/controllers/api/v1/users_controller.rb来定义它
答案 0 :(得分:1)
错误消息确切地说明了要做什么。确保在控制器名称中使用API
而不是Api
。
# == HERE ==
class API::V1::UsersController < ApplicationController
respond_to :json
def index
respond_with User.all
end
end
答案 1 :(得分:0)
或者第二种方式声明另一个首字母缩略词,或者无论如何将其删除:
<强>是inflections.rb 强>:
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'Api'
end