ActiveModel :: Serializers Gem – Versioned API命名空间问题

我是Rails和模块/命名空间的新手

我的控制器是这样的命名空间:

module Api module V1 class PostsController < ApiController 

ActiveModel :: Serializers在我的app文件夹中放了一个“Serializers”文件夹,在其中,我创建了包含以下代码的post_serializer.rb:

 class PostSerializer < ActiveModel::Serializer attributes :id, :body, :category, end 

当我尝试访问JSON响应时,我得到:

 NameError at /api/v1/posts uninitialized constant Api::V1::PostsController::PostSerializer 

这里的问题是什么?命名空间我的Serializers与API版本一起使用的最佳方法是什么?

请注意,名称空间应与文件夹结构匹配:

 # should be in app/controllers/api/v1/posts_controller.rb module Api module V1 class PostsController < ApiController # should be in app/serializers/post_serializer.rb class PostSerializer < ActiveModel::Serializer 

当使用没有前缀的PostSerializer时,假定当前的命名空间。 如果您正在引用全局命名空间use ::PostSerializer