【问题标题】:uninitialized constant API::V1::MusicController未初始化的常量 API::V1::MusicController
【发布时间】:2017-12-28 21:45:48
【问题描述】:

当有很多类似的帖子但没有适合我的接缝时,我真的很抱歉问这个问题。

/app/controllers/api/v1/musics_controller.rb:

class Api::V1::MusicsController < ApplicationController::API
  def index
    music = Music.order('created_at DESC');
    render json: {status: 'SUCCESS', message:'Loaded articles', data:music},status: :ok
  end
end

config/routes.rb:

Rails.application.routes.draw do
  namespace 'api' do
    namespace 'v1' do
      resources :music
    end
  end 
end

错误:

activesupport (5.1.2) lib/active_support/inflector/methods.rb:271:in const_get' activesupport (5.1.2) lib/active_support/inflector/methods.rb:271:inblock in constantize' activesupport (5.1.2) lib/active_support/inflector/methods.rb:267:in each' activesupport (5.1.2) lib/active_support/inflector/methods.rb:267:ininject' 主动支持 (5.1.2) lib/active_support/inflector/methods.rb:267:in constantize' actionpack (5.1.2) lib/action_dispatch/http/request.rb:82:in controller_class' actionpack (5.1.2) lib/action_dispatch/routing/route_set.rb:43:in controller' actionpack (5.1.2) lib/action_dispatch/routing/route_set.rb:29:inserve' actionpack (5.1.2) lib/action_dispatch/journey/router.rb:46:in block in serve' actionpack (5.1.2) lib/action_dispatch/journey/router.rb:33:ineach' actionpack (5.1.2) lib/action_dispatch/journey/router.rb:33:in serve' actionpack (5.1.2) lib/action_dispatch/routing/route_set.rb:832:incall' 机架 (2.0.3) lib/rack/etag.rb:25:in call' rack (2.0.3) lib/rack/conditional_get.rb:25:incall' 机架 (2.0.3) lib/rack/head.rb:12:in call' rack (2.0.3) lib/rack/session/abstract/id.rb:232:incontext' 机架 (2.0.3) lib/rack/session/abstract/id.rb:226:in call' actionpack (5.1.2) lib/action_dispatch/middleware/cookies.rb:613:incall' activerecord (5.1.2) lib/active_record/migration.rb:556:in call' actionpack (5.1.2) lib/action_dispatch/middleware/callbacks.rb:26:inblock in 调用'activesupport (5.1.2) lib/active_support/callbacks.rb:97:in run_callbacks' actionpack (5.1.2) lib/action_dispatch/middleware/callbacks.rb:24:incall' 动作包 (5.1.2) lib/action_dispatch/middleware/executor.rb:12:in call' actionpack (5.1.2) lib/action_dispatch/middleware/debug_exceptions.rb:59:incall' 动作包(5.1.2) lib/action_dispatch/middleware/show_exceptions.rb:31:in call' railties (5.1.2) lib/rails/rack/logger.rb:36:incall_app' railties (5.1.2) lib/rails/rack/logger.rb:24:in block in call' activesupport (5.1.2) lib/active_support/tagged_logging.rb:69:inblock in tagged' activesupport (5.1.2) lib/active_support/tagged_logging.rb:26:in tagged' activesupport (5.1.2) lib/active_support/tagged_logging.rb:69:intagged' railties (5.1.2) lib/rails/rack/logger.rb:24:in call' actionpack (5.1.2) lib/action_dispatch/middleware/remote_ip.rb:79:incall' actionpack (5.1.2) lib/action_dispatch/middleware/request_id.rb:25:in call' rack (2.0.3) lib/rack/method_override.rb:22:incall' 机架 (2.0.3) lib/rack/runtime.rb:22:in call' activesupport (5.1.2) lib/active_support/cache/strategy/local_cache_middleware.rb:27:in call' actionpack (5.1.2) lib/action_dispatch/middleware/executor.rb:12:in call' actionpack (5.1.2) lib/action_dispatch/middleware/static.rb:125:incall' 机架 (2.0.3) lib/rack/sendfile.rb:111:in call' railties (5.1.2) lib/rails/engine.rb:522:incall' puma (3.9.1) lib/puma/configuration.rb:224:in call' puma (3.9.1) lib/puma/server.rb:602:inhandle_request' puma (3.9.1) lib/puma/server.rb:435:in process_client' puma (3.9.1) lib/puma/server.rb:299:inblock in run' puma (3.9.1) lib/puma/thread_pool.rb:120:in `block in spawn_thread'

【问题讨论】:

  • Music 还是Musics
  • 是API还是Api?
  • 我知道它很奇怪,但它是音乐
  • 你能添加你得到的 Rails 服务器错误吗?
  • resources :music for MusicController; resources :musicsMusicsController

标签: ruby ruby-on-rails-3 api rubygems


【解决方案1】:

您有两个选择:将资源更改为复数方式:musics(推荐)或将控制器名称和所有相关文件(路由、目录、控制器类)更改为单数方式。

在您提供的代码中,您需要以复数方式指定您的 resources 路由,这就是 Rails 说它找不到 API::V1::MusicController 的原因,因为您的控制器名为 MusicsController,请尝试添加丢失的s 到您的路线:

Rails.application.routes.draw do
  namespace 'api' do
    namespace 'v1' do
      resources :musics
    end
  end 
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    相关资源
    最近更新 更多