对于rails控制器中的activerecord对象,我需要一个漂亮的JSON输出。基于jpatokal对this question的回答,我尝试了以下内容:
respond_to do |format|
format.json { render :json => JSON.pretty_generate(record) }
end
,其中
record
是一个activerecord对象。它不会产生美化输出。但是,当我尝试使用相同的代码输出哈希时,即
respond_to do |format|
format.json { render :json => JSON.pretty_generate({"abc" => "1", "def" => "2"}) }
end
它确实产生了一个美化输出(所以pretty_generate正在工作,我的浏览器也是如此)。
如何使用pretty_generate生成activerecord对象的漂亮输出?
答案 0 :(得分:5)
要从活动记录对象获得漂亮的JSON输出,您必须首先将对象请求为JSON。
record.as_json
以上代码将为您执行此操作,从控制器呈现漂亮JSON的简短方法是:
render json: JSON.pretty_generate(record.as_json)
这也解决了您尝试将AR对象转换为"only generation of JSON objects or arrays allowed"
JSON时可能出现的pretty_generate
错误。
编辑:我忘了提及这一切都可以在rails 4.1.8
及以上(可能更早)使用标准的json
和multi-json
宝石进行与rails项目。