繁体   English   中英

ActiveModel :: Serializers Gem-版本化的API名称空间问题

[英]ActiveModel::Serializers Gem - Versioned API Namespacing Issue

我是Rails和Modules / Namespace的新手

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

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

这里的问题是什么?命名空间我的序列化器和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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM