Rails API - API :: V1 :: UsersController #index中的LoadError

时间:2016-04-26 15:16:55

标签: ruby-on-rails api

我正在尝试向我的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来定义它

2 个答案:

答案 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