我仍然是有关Rails上红宝石的初学者,我正在尝试创建一个简单的API,但是我遇到了以下错误:“未初始化的常量Api”
ideas_controller.rb
module Api
module V1
class ItemsController < BaseController
def index
@ideas = Idea.all
render json: @ideas
end
end
end
end
routes.db
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resources :ideas
end
end
end
application_controller.rb
class ApplicationController < ActionController
protect_from_forgery with: :null_session
end
base_controller.rb
module Api
module V1
class BaseController < ApplicationController
respond_to :json
end
end
项目目录:
我还启用了: config.eager_load = true 之后,出现以下错误:
“ load_missing_constant中的块”:未初始化的常量Api :: V1 :: BaseController(NameError)
答案 0 :(得分:1)
如果您处于开发环境中,则默认情况下将禁用快速加载,可以通过打开快速加载(在config.eager_load = true
中更改为config/development.rb
来修复此问题)。渴望的加载将允许在服务器启动时加载整个Rails应用程序(速度稍慢),但由于将加载该文件,因此可以解决您的问题。
答案 1 :(得分:0)
此错误是因为之前没有定义module Api
,我想如果您这样做就可以了。来自答案here
module Api
module V1
class IdeasController < ApplicationController
def index
@ideas = Idea.all
render json: @ideas
end
end
end
end
另一个解决方案可能是这样的:
module Api
module V1
end
end
class Api::V1::IdeasController < ApplicationController
def index
@ideas = Idea.all
render json: @ideas
end
end
希望有帮助。
答案 2 :(得分:0)
在您的想法控制器中尝试
module Api
module V1
class IdeasController < Api::V1::BaseController
def index
@ideas = Idea.all
render json: @ideas
end
end
end
end
并通过以下方式定义基本控制器
class Api::V1::BaseController < ApplicationController
respond_to :json
end