在Active Model Serializer的0.10.6版本中,集合渲染不会包含根键。如果你想要在渲染集合时包含根键,可以使用以下代码示例中的解决方法:
假设你有一个Post
模型和一个PostSerializer
序列化器,你可以按照以下步骤进行操作:
config/initializers/active_model_serializer.rb
文件中,添加以下配置:ActiveModelSerializers.config.adapter = :json
PostSerializer
中,使用each_serializer
选项来指定渲染集合时使用的子序列化器。例如:class PostSerializer < ActiveModel::Serializer
attributes :id, :title, :body
# 定义一个子序列化器来渲染单个的Post对象
class PostItemSerializer < ActiveModel::Serializer
attributes :id, :title, :body
end
# 使用each_serializer选项来指定子序列化器
has_many :comments, each_serializer: PostItemSerializer
end
render
方法来渲染集合。例如:class PostsController < ApplicationController
def index
posts = Post.all
render json: posts, each_serializer: PostSerializer::PostItemSerializer
end
end
现在,当你访问/posts
时,将渲染包含根键的集合输出。例如:
{
"posts": [
{
"id": 1,
"title": "First Post",
"body": "This is the first post"
},
{
"id": 2,
"title": "Second Post",
"body": "This is the second post"
}
]
}
希望这可以帮助到你!