Я использую Active Model сериализаторы v0.10.0.rc4ActiveModel :: Serializer :: CollectionSerializer
Я хочу, чтобы произвести JSON, который выглядит следующим образом:
{
"posts": [
{ "post": {"id": 2, "name": "foo"} },
{ "post": {"id": 3, "name": "bar"} }
],
"next_page": 3
}
Я знаю, что основные:
render json: posts, each_serializer: PostSerializer
будет производить JSON как это:
[
{"id": 2, "name": "foo"}
{"id": 3, "name": "bar"}
]
я попытался следующее:
контроллер:
render json: posts, serializer: PostsSerializer
posts_serializer:
class PostsSerializer < ActiveModel::Serializer
attributes :posts, :next_page
def posts
ActiveModel::Serializer::CollectionSerializer.new(object,
each_serializer: PostSerializer,
root: "post"
)
end
def next_page
3
end
end
Но это приводит к JSON как это:
{
"posts": [
{
"object": {"id": 2, "name": "foo"},
"instance_options": {"each_serializer: {}", "root": "post" }
},
{
"object": {"id": 3, "name": "bar"},
"instance_options": {"each_serializer: {}", "root": "post" }
},
],
"next_page": 3
}
Каждый знает, как я могу достичь желаемая схема?
В настоящее время я работаю над этой же проблемой. Пожалуйста, дайте мне знать, если вы это выясните. – sfkaos