我正在尝试形成一个看起来像这样的json响应:
{
"user": {
"birthday": "2013-03-13",
"email": "example@example",
"id": 1,
"name": null,
"username": "example"
},
"other_data": "foo"
}
之前,当我刚回来时,我使用了
render :json => @user, :except => [:hashed_password, :created_at, :updated_at]
保持发送hashed_password,created_at和updated_at属性。有没有办法做到这一点,但也允许与用户一起发送其他数据?现在我只是逐个添加我想要发送到哈希的属性,但这显然不太理想。
答案 0 :(得分:21)
首先渲染json数据,自动调用' as_json'在你的模型上,它返回一个ruby哈希。在那之后,' to_json'调用它来获取哈希的字符串表示。
为了达到你想要的效果,你可以这样打电话:
render :json => {
:user => @user.as_json(:except => [:hashed_password]),
:some_other_data => {}
}
在这种情况下,没有对象响应' as_json',所以控制器只调用' to_json'把你的哈希变成一个字符串。
答案 1 :(得分:0)
我建议使用这个gem:https://github.com/fabrik42/acts_as_api