Active_Model_Serializersを使用するときのコレクションレンダリングをカスタマイズする方法
-
12-12-2019 - |
質問
Active_Model_Serializersを使用して、Ember-Data CussionのJSONとしてコレクションをレンダリングしています。 すべての項目をレンダリングするときはすべて問題がありますが、コレクションレンダリングはアイテムの配列として構成されています。
render json: @scenarios, status: :ok
.
を与える:
[{"scenario":{"id":4,"name":"My sample scenario"}},{"scenario":{"id":5,"name":"Yet another sample scenario"}}]
.
しかし私は取得したいです:
{"scenarios": [{"id":4,"name":"My sample scenario"},{"id":5,"name":"Yet another sample scenario"}]}
.
すべてのコレクションアイテム、サイドデータなどでルートキーを入手する最先端の方法は何ですか?(この文書はこれについて明確ではありません)
編集
シナリオシリアライザは現在次のとおりです。
.class ScenarioSerializer < ActiveModel::Serializer
attributes :id, :name
end
解決
最新版を試してください。AMSは、コントローラ名を配列のキーとして使用します。デフォルトでは、上記のようにレンダリングする必要があります。
コントローラがシナリオスコンローラーという名前の場合は、次のような配列のルート要素を強制することができます。
render json: @scenarios, root: "scenarios", status: :ok
. 所属していません StackOverflow