如何渲染json:包括在里面?

时间:2012-04-07 08:25:58

标签: ruby-on-rails

我有模型GuestOrder, OrderBatch, OrderItem

# == Schema Information
#
# Table name: guest_orders
#
#  id             :integer         not null, primary key
#  notes          :string(255)
#  adults         :integer
#  children       :integer
#  created        :datetime
#  placed         :datetime
#  billed         :datetime
#  created_at     :datetime
#  updated_at     :datetime
#

class GuestOrder < ActiveRecord::Base
  has_many :order_batches, :dependent => :destroy
end

# == Schema Information
#
# Table name: order_batches
#
#  id             :integer         not null, primary key
#  placed         :datetime
#  guest_order_id :integer
#  created_at     :datetime
#  updated_at     :datetime
#

class OrderBatch < ActiveRecord::Base
  belongs_to :guest_order
  has_many :order_items, :dependent => :destroy
end

# == Schema Information
#
# Table name: order_items
#
#  id             :integer         not null, primary key
#  quantity       :integer
#  accepted       :datetime
#  cooking        :datetime
#  ready          :datetime
#  delivered      :datetime
#  cancelled      :datetime
#  order_batch_id :integer
#  dish_id        :integer
#  created_at     :datetime
#  updated_at     :datetime
#

class OrderItem < ActiveRecord::Base
  belongs_to :order_batch
  belongs_to :dish
end

我正在尝试使用以下方法呈现json,以通过传递guest_order id作为参数来获取guest_order及其所属的order_batches和order_items。

    def getOrderDetails
        #To get the details of a particular guest_order and its batches and items
        @guest_order = GuestOrder.find_by_id(params[:id])
        render :json => @guest_order.to_json(:except => [:created_at, :updated_at], 
:includes => {:order_batches => {:except => [:guest_order_id, :created_at, :updated_at],
:includes => {:order_items => {:except => [:order_batch_id, :created_at, :updated_at] } } } } )
    end

但是我没有得到预期的结果,只呈现了guest_orders表中的细节。怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

我使用:include而不是:includes,不确定这是否重要。

尝试使用:include不包括:除了第一个,当你开始工作时,添加:except。