ich eine jbuilder zu verwenden ist versucht, eine JSON-Antwort für ein TypeCar Objekt in meiner Antwortein Objekts in einer jbuilder teilweise Rückkehr Abrufen von ‚Null‘, wenn es in einem Array gewickelt ist
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
Im json zu machen für die TypeCar teilweise, "Ansichten/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
Und das Haupt Auto Teil in "api/main_cars/_main_cars.json.jbuilder"
json.extract! main_car, :more_info, :name, :id
die Ansicht, die _type_car Teilweise gibt die folgenden
{
name: test,
main_car: [
{
more_info: "Lorem Ipsum",
name: "New",
id: 198
}
]
Ich bin zu raten, dass die für das Hauptauto Attribut verwendet eine Hash in einem einzigen Objekt Array ist das Array aufgrund Einwickeln. Aber ich möchte das entfernen, da es eine zusätzliche Ebene der Verschachtelung ist, die nicht benötigt wird. Also würde ich einfach einen einfachen Hash anstelle eines Hash in einem Array bevorzugen.
Der Grund, warum ich das Objekt in ein Array wickeln musste und es zu einem Aufzählungszeichen übergeben musste, war, weil nichts anderes zu funktionieren schien. Diese
...
json.extract! type_car, :name
json.main_car do
json.partial! "api/main_cars/main_cars", main_car: type_car.main_car
end
diesen Fehler gibt ...
undefined method `more_info' for nil:NilClass
Und:
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
gibt diesen Fehler:
undefined method `map' for #<MainCar:>
Selbst wenn man Dinge wie type_car.main_car.id innerhalb des Typs car partial testet, wird das Null-Problem zurückgegeben.
Wirklich zu schätzen all die Hilfe und Anleitung, danke!