respond_with 在索引中使用时不包括嵌套资源
respond_with when used in index does not include nested resources
我有以下 类 与 has_one
关系,我想 return 它嵌套在我的 index
方法中的 JSON 中。
class QuantitySample < ActiveRecord::Base
has_one :quantity, :dependent => :destroy
...
class Quantity < ActiveRecord::Base
belongs_to :quantity_sample
...
我想在 index 方法上使用 respond_with
return 每个数量样本和与每个样本关联的数量对象:
class QuantitySamplesController < ApplicationController
respond_to :json
def index
quantity_samples = current_user.quantity_samples
respond_with quantity_samples, :include => {:quantity => {}}
end
...
我没有用上面的代码得到嵌套/包含的数量对象。但是,如果我将 respond_with
替换为 to_json
:
respond_to do |format|
format.json do
render :json => quantity_samples.to_json(:include => {:quantity => {}})
end
end
:include
有效!
完整 JSON 结果:respond_to
我得到:
{"quantity_samples"=>[{"id"=>1, "start_date"=>"2016-01-04T07:38:40.694Z", "end_date"=>"2016-01-04T07:38:40.694Z", "user_id"=>1, "workout_id"=>nil, "created_at"=>"2016-01-04T07:38:41.328Z", "updated_at"=>"2016-01-04T07:38:41.328Z", "quantity_type"=>"HKQuantityTypeIdentifierDistanceWalkingRunning", "device"=>nil, "metadata"=>nil}]}
对比to_json
:
[{"id"=>1, "start_date"=>"2016-01-04T07:36:09.415Z", "end_date"=>"2016-01-04T07:36:09.415Z", "user_id"=>1, "workout_id"=>nil, "created_at"=>"2016-01-04T07:36:10.110Z", "updated_at"=>"2016-01-04T07:36:10.110Z", "quantity_type"=>"HKQuantityTypeIdentifierDistanceWalkingRunning", "device"=>nil, "metadata"=>nil, "quantity"=>{"id"=>2, "value"=>4200.0, "unit"=>"m", "created_at"=>"2016-01-04T07:36:10.123Z", "updated_at"=>"2016-01-04T07:36:10.123Z", "name"=>nil, "quantity_sample_id"=>1}}]
为什么这不适用于 respond_with
?
似乎对我有用。我只是复制了 link 提供的
中所做的事情
respond_to :json
def index
quantity_samples = current_user.quantity_samples.to_json(include: :quantity)
respond_with quantity_samples
end
我有以下 类 与 has_one
关系,我想 return 它嵌套在我的 index
方法中的 JSON 中。
class QuantitySample < ActiveRecord::Base
has_one :quantity, :dependent => :destroy
...
class Quantity < ActiveRecord::Base
belongs_to :quantity_sample
...
我想在 index 方法上使用 respond_with
return 每个数量样本和与每个样本关联的数量对象:
class QuantitySamplesController < ApplicationController
respond_to :json
def index
quantity_samples = current_user.quantity_samples
respond_with quantity_samples, :include => {:quantity => {}}
end
...
我没有用上面的代码得到嵌套/包含的数量对象。但是,如果我将 respond_with
替换为 to_json
:
respond_to do |format|
format.json do
render :json => quantity_samples.to_json(:include => {:quantity => {}})
end
end
:include
有效!
完整 JSON 结果:respond_to
我得到:
{"quantity_samples"=>[{"id"=>1, "start_date"=>"2016-01-04T07:38:40.694Z", "end_date"=>"2016-01-04T07:38:40.694Z", "user_id"=>1, "workout_id"=>nil, "created_at"=>"2016-01-04T07:38:41.328Z", "updated_at"=>"2016-01-04T07:38:41.328Z", "quantity_type"=>"HKQuantityTypeIdentifierDistanceWalkingRunning", "device"=>nil, "metadata"=>nil}]}
对比to_json
:
[{"id"=>1, "start_date"=>"2016-01-04T07:36:09.415Z", "end_date"=>"2016-01-04T07:36:09.415Z", "user_id"=>1, "workout_id"=>nil, "created_at"=>"2016-01-04T07:36:10.110Z", "updated_at"=>"2016-01-04T07:36:10.110Z", "quantity_type"=>"HKQuantityTypeIdentifierDistanceWalkingRunning", "device"=>nil, "metadata"=>nil, "quantity"=>{"id"=>2, "value"=>4200.0, "unit"=>"m", "created_at"=>"2016-01-04T07:36:10.123Z", "updated_at"=>"2016-01-04T07:36:10.123Z", "name"=>nil, "quantity_sample_id"=>1}}]
为什么这不适用于 respond_with
?
似乎对我有用。我只是复制了 link 提供的
中所做的事情respond_to :json
def index
quantity_samples = current_user.quantity_samples.to_json(include: :quantity)
respond_with quantity_samples
end