Ruby on rails Rails,包括json呈现中的关系

Ruby on rails Rails,包括json呈现中的关系,ruby-on-rails,ruby,json,Ruby On Rails,Ruby,Json,我有以下代码返回一个json,其中包含@admin_user.companys的一些数据: @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.companys的一些数据:

@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.companys中包含每个公司的所有位置?

传统方法是使用

render json: @admin_user.companies, include: :locations
(有关更多选项,请参阅。)

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

render :json => @admin_user,
  :include => {
    :companies => { :include => :locations },
  },
  :methods => :authentication_token
旁注
这只是一个例子。您必须配置
:include
:methods
,才能获得您想要的内容。要获得更细粒度的控制,请查看或。

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

  • jbuilder
    gem添加到您的应用程序中
  • 从控制器中使用
    JBuilder.encode
    生成JSON
  • 或者,在
    视图
    目录中创建
    .json.jbuilder
    模板

它不会给我任何错误,但json只返回公司和方法。它缺少什么吗?提前谢谢你!可能你试过调试它吗?它在我刚刚制作的一个测试应用程序上按预期工作。我确实这样做了,这使呈现json:@admin_user,:include=>{:companys=>{:include=>:locations}