在 jbuilder partial return 'nil' 中检索对象,除非它被包裹在数组中
Retrieving an object in a jbuilder partial return 'nil' unless it is wrapped in an array
我正在尝试使用 jbuilder 为我的响应中的 TypeCar 对象呈现 json 响应
class TypeCar < ActiveRecord::Base
attr_accessible :name
belongs_to :car_alias, foreign_key: :name, primary_key: :name, counter_cache: true
has_one :main_car, through: :car_alias, foreign_key: :name, primary_key: :name
end
在 json 中,对于 TypeCar 部分,"views/api/type_cars/_type_cars.json.jbuilder",
json.extract! type_car, :name
json.main_car Array.wrap(type_car.main_car) do |main_car|
json.partial! "api/main_cars/main_cars", main_car: main_car
end
而主车偏在"api/main_cars/_main_cars.json.jbuilder"
json.extract! main_car, :more_info, :name, :id
使用_type_car部分的视图,returns以下
{
name: test,
main_car: [
{
more_info: "Lorem Ipsum",
name: "New",
id: 198
}
]
我猜测 for main car 属性是单个对象数组中的散列,因为它包装了数组。但我想删除它,因为它是不需要的额外一层嵌套。所以我更喜欢普通散列而不是数组中的散列。
我必须将对象包装在数组中并将其传递给可枚举对象的原因是因为似乎没有其他方法有效。
这个...
json.extract! type_car, :name
json.main_car do
json.partial! "api/main_cars/main_cars", main_car: type_car.main_car
end
给出这个错误...
undefined method `more_info' for nil:NilClass
还有这个:
json.extract! type_car, :name
json.main_car type_car.main_car do |main_car|
json.partial! "api/main_cars/main_cars", main_car:main_car
end
出现此错误:
undefined method `map' for #<MainCar:>
甚至在类型汽车部分 returns 中尝试 type_car.main_car.id 之类的问题。
非常感谢所有的帮助和指导,谢谢!
解决了。一些 type_car 对象实际上不存在主要汽车对象(duh!)。
应该是
json.main_car do
if type_car.main_car.present?
json.partial! "api/main_cars/main_cars", main_car: type_car.main_car
end
end
我正在尝试使用 jbuilder 为我的响应中的 TypeCar 对象呈现 json 响应
class TypeCar < ActiveRecord::Base
attr_accessible :name
belongs_to :car_alias, foreign_key: :name, primary_key: :name, counter_cache: true
has_one :main_car, through: :car_alias, foreign_key: :name, primary_key: :name
end
在 json 中,对于 TypeCar 部分,"views/api/type_cars/_type_cars.json.jbuilder",
json.extract! type_car, :name
json.main_car Array.wrap(type_car.main_car) do |main_car|
json.partial! "api/main_cars/main_cars", main_car: main_car
end
而主车偏在"api/main_cars/_main_cars.json.jbuilder"
json.extract! main_car, :more_info, :name, :id
使用_type_car部分的视图,returns以下
{
name: test,
main_car: [
{
more_info: "Lorem Ipsum",
name: "New",
id: 198
}
]
我猜测 for main car 属性是单个对象数组中的散列,因为它包装了数组。但我想删除它,因为它是不需要的额外一层嵌套。所以我更喜欢普通散列而不是数组中的散列。
我必须将对象包装在数组中并将其传递给可枚举对象的原因是因为似乎没有其他方法有效。
这个...
json.extract! type_car, :name
json.main_car do
json.partial! "api/main_cars/main_cars", main_car: type_car.main_car
end
给出这个错误...
undefined method `more_info' for nil:NilClass
还有这个:
json.extract! type_car, :name
json.main_car type_car.main_car do |main_car|
json.partial! "api/main_cars/main_cars", main_car:main_car
end
出现此错误:
undefined method `map' for #<MainCar:>
甚至在类型汽车部分 returns 中尝试 type_car.main_car.id 之类的问题。
非常感谢所有的帮助和指导,谢谢!
解决了。一些 type_car 对象实际上不存在主要汽车对象(duh!)。
应该是
json.main_car do
if type_car.main_car.present?
json.partial! "api/main_cars/main_cars", main_car: type_car.main_car
end
end