2016-08-28 5 views
0

私は2つの要素の間に関係があります。基本的に、投稿は&です。私はカテゴリを変更したいとき、私はPOST/post/:post_id/categoriesに行い、Jsonシリアライザの異なるjson名

PostsControllerindex

index, show, update, destroy & *categories*

CategoriesControllerと:私のアプローチで

は、私は2つのコントローラを持っています。そして、すべて正常に動作します。しかし、私が返信したい答えは私の投稿のカテゴリーだけです。だから、私は:

render json: @post.categories, 
     each_serializer: CategorySerializer 

それはうまくいきます。しかし、私は、JSONで受け取る答えは次のとおりです。

posts: [{id:1, title:'Category 1'}, {id:2, title:'Category 2'}] 

しかし、所望の出力は次のようになります。

categories: [{id:1, title:'Category 1'}, {id:2, title:'Category 2'}] 

は、どのように私はこれを変更することができますか?

答えて

1

あなたはこれを試すことができます。

categories = @post.categories.map { |c| CategorySerializer.new(c) } 
render json: { categories: categories } 
+0

私はガイドとしてこれを使用します。しかし、私はあなたの最初の行を使用しませんでした。私は変更するだけです: from: 'render json:@ post.categories' to:' render {categories:@ post.categories} ' 私は理論上何かのために前の行が必要ですか?または私の回避策を使用することはできますか? ありがとうございました!できます!しかし、私は最初の行の理由を知りたい(または、問題なく回避策を使用できるかどうかを知りたい): – joseglego

+0

最初の行の理由は、 '@ post'変数デフォルトでは、 ['ルートキーを追加する方法'](https://github.com/rails-api/active_model_serializers/blob/master/docs/howto/add_root_key.md#how-to-add-root-key)もチェックすることができます。と[ルートキーを上書きする](https://github.com/rails-api/active_model_serializers/blob/master/docs/general/rendering.md#overriding-the-root-key)がありましたが、私の答えのようなハック。 –

関連する問題