路由错误未初始化的常量API轨道

ove*_*low 4 ruby-on-rails rails-api ruby-on-rails-4

我已经提到了这个链接

创建我自己的api但遇到路由错误,因为这是第一次使用命名空间.

这是我的控制器

class API::IndexController < ApplicationController
  def index
    @clients = Client.all
    respond_to do |format|
        format.json
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我的路线有

  namespace :api do
    resources :index
  end
Run Code Online (Sandbox Code Playgroud)

这是我的inflection.rb

ActiveSupport::Inflector.inflections(:en) do |inflect|
    inflect.acronym 'API'
end
Run Code Online (Sandbox Code Playgroud)

一旦我完成它我尝试localhost:3000/api/index.json,但抛出错误为

    Routing Error
uninitialized constant API
Run Code Online (Sandbox Code Playgroud)

谁能帮忙.

小智 8

即使这个问题很老了......

我有同样的问题,我的解决方案是将api文件夹(在app/controllers和app/views中)从"API"(完整大写)重命名为"api"(全部小写)

希望这可以帮助


anu*_*sha 5

您的类中的名称必须与命名空间相同。尝试这个:

class Api::IndexController < ApplicationController
  def index
    @clients = Client.all
    respond_to do |format|
        format.json
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

路线:

  namespace :api do
    resources :index
  end
Run Code Online (Sandbox Code Playgroud)


Ami*_*ait 0

如果您正在定义命名空间,IndexController那么API在您的命名空间中routes.rb应该写成

  namespace :a_p_i do
    resources :index
  end
Run Code Online (Sandbox Code Playgroud)

否则,如果您想使用在路由文件中编写的内容,只需将IndexControllerform 的命名空间更改APIApi. 对于前:Api::IndexController