从控制器渲染JSON中的对象时,如何在对象的父级中包含一个字段?

时间:2016-10-06 21:34:12

标签: ruby-on-rails json ruby controller format

我正在使用Rails 4.2.7。通过show方法返回对象时,我想要包含对象父对象中的对象。我试过了

  def show
    respond_to do |format|
      @my_object = MyObject.find(params[:id])
      format.json { render :json => @my_object.to_json(:include => [:parent, :include => :address]) }
    end
  end

但是这会产生错误

NoMethodError (undefined method `include' for #<MyObject:0x007fa1b433d788>):

从父母那里包含一个对象的正确方法是什么?

编辑:这是我的Rails应用中的父模型

class Parent < ActiveRecord::Base
  belongs_to :address, :autosave => true   #, dependent: :destroy

1 个答案:

答案 0 :(得分:1)

试试这个

def show

  @my_object = MyObject.find(params[:id])
  render :json => @my_object.to_json(:include => [:parent => {:include => :address}]) 

end

您已在include语句中添加了包含

@my_object.to_json(:include => [:parent, **:include** => :address])

所以rails正在搜索包括作为方法或模型之一。

您可以使用这样的数组来包含多个关系。

:include => [:parent, :address]