2017-04-15 39 views
0
ActiveModelSerializers.config.default_includes = '**' 

我們通過序列化程序(包括作者和一些信息)呈現註釋。如果包含在散列表中,則序列化程序不會被使用

這是使用串行和一切偉大工程

render json: comments 

但是,我們還需要發送額外的元數據,所以我們把它包裝成一個哈希值。不幸的是,這是不使用串行,我們無法弄清楚,爲什麼

render json: {comments: comments, upvoted: upvoted, downvoted: downvoted} 
+0

您是否嘗試過使用'as_json'?像'render json:{comments:comments.as_json,upvoted:upvoted,downvoted:downvoted}'? – Gerry

+0

所以你有一個評論序列化器定義?像一個實際的CommentsSerializer類? – arjabbar

+0

@Gerry與as_json或to_json沒什麼關係,因爲這是默認設置。只是查找序列化程序丟失 –

回答

1

你可能想要的是有upvoted和downvoted包括在元數據屬性。要將upvoted和downvoted屬性包含爲元數據,您必須使用json或json_api適配器。在你的控制器有這樣的:

render json: comments, meta: { upvoted: upvoted, downvoted: downvoted }, adapter: :json 

將呈現:

{ 
    "comments": [ 
    // your comments... 
    ], 
    "meta": { 
    "upvoted": 4243, 
    "downvoted": 123 
    } 
} 

如果不是這樣,你可以只此響應它有意見和upvoted和downvoted屬性創建一個模型。

+0

https://github.com/rails-api/active_model_serializers/issues/2102#issuecomment-293292697 這個我發現。,這是工作 爲什麼我們在json字符串中命名附加字段'meta'?那是否有任何約定? –

相關問題