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