2

我試圖使用JBuilder的呈現在我的反應在「零」一個JBuilder的部分返回檢索對象,除非它被包裹在一個陣列

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對象的JSON響應對於TypeCar部分, 「意見/ 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局部視圖,返回以下

{ 
name: test, 
main_car: [ 
{ 
more_info: "Lorem Ipsum", 
name: "New", 
id: 198 
} 
] 

我猜測,該主車屬性是因爲結束了該陣列的一個單一的對象陣列中的散列。但是我想刪除它,因爲它是不需要的更多額外級別的嵌套。所以我只想在數組中使用純哈希而不是哈希。

我不得不將對象包裝到一個數組中並將其傳遞給一個枚舉的原因是因爲沒有其他東西似乎可以工作。

這...

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

即使嘗試類型car中的type_car.main_car.id,也會返回零問題。

非常感謝所有的幫助和指導,謝謝!

回答

1

解決了它。主要汽車對象實際上並不存在於某些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 
相關問題