【发布时间】:2014-03-10 02:15:27
【问题描述】:
我在 Rails 控制器中返回 JSON 的标准机制是:
respond_to do |format|
format.html
format.json { render json: @cars }
end
有没有办法修改@cars JSON?特别是我只想在其中添加 4 个额外的字段。
更新:抱歉,我应该多解释一下。 @cars 包含 Car 对象的列表。我想为 JSON 中的每个 Car 对象添加 4 个字段。这对于特定控制器来说是唯一,因此我不想创建 as_json 方法,因为这会影响此类的其他 JSON。
【问题讨论】:
-
@cars 是来自 Car Model 的结果集吗?这 4 个字段对于每条记录也是唯一的,还是与
cars的集合相邻的超集? -
您的意思是,您想在汽车对象之外添加 4 个额外字段?喜欢:
{total_records: 4, current_page: 1, per_page: 2, cars: [{...},{...}]} -
对不起,我应该澄清一下。更新问题。
-
@at.:正如我在另一条评论中所写,您可以轻松地使用 to_json(:exclude => [], :methods => [])。有关详细信息,请参阅我的答案
-
@at。您可以将通常传递给 #as_json 方法的所有选项传递给控制器中的 #to_json。或者,您可以创建一个自定义 ActiveModelSerializer 并且只在控制器中使用一次:
render json: @cars, serializer: MyCustomCarSerializer
标签: ruby-on-rails json