Rails 3使用自定义属性/方法response_to json

在rails应用程序中,我有一个动作,返回不同模型集合的json表示。 它看起来像这样:

respond_to :json def index @cars = Car.all @vans = Van.all respond_with({ :cars => @cars, :vans => @vans }) end 

但是,我想自定义传递给json对象的属性和方法。 有一点像:

 respond_with({ :cars => @cars.to_json(:only => [:make, :model], :methods => [:full_name]), :vans => @vans }) 

执行上述操作后,会将“cars”的json表示转义为一个大字符串,如:

 { "cars":"[{\"car\":{\"make\":\"Ford\" ... etc "vans": [{"van":{"make":"Citreon" ... vans not escaped } 

显然我正以错误的方式接近这一点。 谁能指出我正确的方向?

由于你将to_json嵌套在另一个Hash ,我认为你需要使用as_json (它返回一个Hash而不是一个String ):

 respond_with({ :cars => @cars.as_json(:only => [:make, :model], :methods => [:full_name]), :vans => @vans })