gpt4 book ai didi

ruby-on-rails - 检索 jbuilder 部分返回 'nil' 中的对象,除非它被包装在数组中

转载 作者:行者123 更新时间:2023-12-04 05:45:22 24 4
gpt4 key购买 nike

我正在尝试使用 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

在 TypeCar 部分的 json 中,“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 部分的 View 返回以下内容

{
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:>

即使在 type car 部分中尝试像 type_car.main_car.id 这样的东西也会返回 nil 问题。

非常感谢所有的帮助和指导,谢谢!

最佳答案

解决了。某些 type_car 对象实际上不存在主汽车对象(呃!)。

应该是这样

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

关于ruby-on-rails - 检索 jbuilder 部分返回 'nil' 中的对象,除非它被包装在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36298199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com