[英]"uninitialized constant Api::V1::ReservationOptionsController::ReservationOptions"
[英]uninitialized constant API::V1::ApplicationSerializer
我开始使用gem 'active_model_serializers', '~> 0.10.0'
。 按照本文档执行。
我有以下关系。
landmark has_many concerns
concern belongs_to landmark
concern has_many comments
我在app/serializers/api/application_serializer.rb
创建了一个ApplicationSerializer
module API
class ApplicationSerializer < ActiveModel::Serializer
# some commode here
end
end
我的关注序列化程序包含:
# ===> 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
在上面的代码中,如果我用ActiveModel::Serializer
替换ApplicationSerializer
它可以正常工作,但是我丢失了ApplicationSerializer
中定义的通用代码。
看起来像一个自动加载问题。 ApplicationSerializer
应该在它自己的文件<serializers directory>/api/application_serializer.rb
(确保在app
中创建目录后重新启动 server/spring 以便它们被自动加载器拾取)
您也可以使用绝对 class 名称来引用它: ::API::ApplicationSerializer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.