所以我有一个名为Image的模型,名为belongs_to:user。每个用户都有名字和姓氏。
我有一个Flash应用程序,我将json对象返回到Images。
我将在图像控制器上调用的服务看起来像这样
def getimages
@images = Image.all
render :json => @images
end
我的json看起来像这样
[{"image":{"created_at":"2011-01-22T19:04:30Z","img_path":"assets/img/bowl_93847566_3_0.png","updated_at":"2011-01-22T19:04:30Z","id":9,"user_id":3}}]
我想要做的还包括在传递回来的图像对象中的用户名和姓。
一旦我有了一个图像对象,我就可以做image.user.first_name
这样的事情,但我不清楚如何返回像图像对象一样的东西,并将用户包括在内。
如果我能让我的图像阵列看起来如下,那将是多么美妙。
[{"image":{"created_at":"2011-01-22T19:04:30Z","img_path":"assets/img/bowl_93847566_3_0.png","updated_at":"2011-01-22T19:04:30Z","id":9,"user_id":3, "first_name":"Matthew", "last_name":"Wallace"}}]
我认为这可能包括添加某种我不熟悉的模型方法或某种方法。
实现这一目标的最佳做法是什么?
答案 0 :(得分:1)
你可以:
render :json => @images.to_json(:include => :users)
请参阅http://apidock.com/rails/ActiveRecord/Serialization/to_json(http://apidock.com/rails/Array/to_json显示它适用于阵列)。最后,http://apidock.com/rails/ActionController/Base/render描述了在json渲染中使用to_json
作为可选而不是必需的,这意味着它不会造成任何伤害(我无法看到另一种传递所需选项的方法)。
也许更清洁的json:
render :json => @images.to_json(:include => { :user => { :only => [:first_name, :last_name] } })
答案 1 :(得分:0)
除了@apneadiving提供的答案之外,您还可以覆盖Image的to_json
方法并返回包含所需JSON的字符串。