未初始化的常量API :: V1 :: ApplicationSerializer

我开始使用gem 'active_model_serializers','~> 0.10.0'。遵循this文档 用于实施。

我有以下关系。

landmark has_many concerns
concern belongs_to landmark
concern has_many comments 

我在ApplicationSerializer创建了一个app/serializers/api/application_serializer.rb

module API
  class ApplicationSerializer < activeModel::Serializer
     # some commode here
  end
end

我的care_serializer包含:

# ===> Does not work <=====
module API::V1
  class ConcernSerializer < ApplicationSerializer
    attributes :id,:body
    has_many :comments
    belongs_to :landmark

    class CommentSerializer < ApplicationSerializer
      attributes :id,:body
    end

    class LandmarkSerializer < ApplicationSerializer
      attributes :id,:short_address
    end

  end
end


# ====> However,this works <====
module API::V1
  class ConcernSerializer < ApplicationSerializer
    attributes :id,:body
    has_many :comments

    class CommentSerializer < activeModel::Serializer
      attributes :id,:body
    end

  end
end

# ===> Does not work again<=====
module API::V1
  class ConcernSerializer < ApplicationSerializer
    attributes :id,:body
    has_many :comments
    belongs_to :landmark

    class CommentSerializer < activeModel::Serializer
      attributes :id,:body
    end

    class LandmarkSerializer < activeModel::Serializer
      attributes :id,:short_address
    end

  end
end

在上面的代码中,如果我将ApplicationSerializer替换为activeModel::Serializer可以正常工作,但是我丢失了ApplicationSerializer中定义的通用代码。

www4046994 回答:未初始化的常量API :: V1 :: ApplicationSerializer

看起来像是自动加载问题。 ApplicationSerializer应该在其自己的文件<serializers directory>/api/application_serializer.rb中(请确保在app中创建目录后重新启动服务器/ spring,以便它们被自动加载器拾取)

您也可以使用绝对类名来引用它:::API::ApplicationSerializer

本文链接:https://www.f2er.com/2458323.html

大家都在问