Respond_with JSON @object发送关联对象,而不是@object?

时间:2011-12-14 15:47:04

标签: ruby-on-rails-3.1

如何控制.json请求中返回的对象?我在下面的示例中获取关联对象,而不是主要对象 - 产品,而不是公司:

class Company
  has_many :products
  include Enumerable

class Product
  belongs_to :company

controller Company
  respond_to :html, :json

  def show
    @company = Company.find(1)
    respond_with @company
  end

**respond_with @company   ==>  json of products, not company!**
respond_with @company.id ==> json of :id

1 个答案:

答案 0 :(得分:0)

对于Rails上的to_json,如果对象具有通过 Enumerable 关联的集合,您将获得该对象的关联集合。在这个问题中,如果删除包含Enumerable,则json中返回的对象将只是该对象。但是在包含Enumerable的情况下,json会产生完整的集合,在本例中是产品。要解决此问题,您似乎必须删除Enumerable。