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 })