我是Rails和模块/命名空间的新手
My Controller的命名空间如下:
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版本的最佳方法是什么?
答案 0 :(得分:7)
请注意,名称空间应与文件夹结构匹配:
# 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
时,假定当前的命名空间。如果您引用全局命名空间,请使用::PostSerializer