4

我有以下代码返回一个包含@admin_user.companies 的一些数据的json:

@admin_user = User.find_by_email(email)

render :json=>{:status=>{:code=>200,:token=>@admin_user.authentication_token,
    :user=> @admin_user,
    :companies => @admin_user.companies }}  

每个公司也有许多“地点”。如何在 json 中包含 @admin_user.companies 中每个公司的所有位置?

4

2 回答 2

7

传统的方法是使用

render json: @admin_user.companies, include: :locations

(请参阅#as_json更多选项。)

您不需要在 JSON 中包含状态代码,因为它已经在 HTTP 标头中。因此,以下内容可能会让您接近您的需要。

render :json => @admin_user,
  :include => {
    :companies => { :include => :locations },
  },
  :methods => :authentication_token

边注

这只是一个例子。您将必须配置:include:methods获得您想要的东西。对于更细粒度的控制,请查看JBuilderRABL

于 2013-08-12T22:36:49.870 回答
0

另一种方法是使用jbuilder,它允许您更细粒度地控制 JSON 的生成方式:

  • jbuildergem 添加到您的应用程序中
  • 使用JBuilder.encode您的控制器生成 JSON
  • 或者,在您的目录中创建.json.jbuilder模板views
于 2013-08-12T22:43:27.700 回答