Raylarım uygulamasında bir model (FirstModel) uygulamasının başka bir modelle (Öğe) has_many ilişkisi vardır.Farklı sınıflara sahip nesneler dizisi oluşturmak için raydaki jbuilder'i kullanma
class FirstModel < ActiveRecord::Base
has_many :items, :dependent => :destroy
def item_array
a = []
self.items.each do |item|
a.push(item.item_thing)
end
a
end
end
Öğenin kendisi: bir polimorfik ilişkiden öğe. FirstModel'deki bir yöntem, birleştirme öğesi nesnesini (sınıf Öğesi olan) değil, her Öğe nesnesinin item_thing öğesini değil, bir "öğe" dizisini döndürür ve bu nedenle farklı sınıfların nesnelerinin bir dizisidir (raylar konsolunda kontrol edilir, ve yöntem FirstModel benim show.json.jbuilder olarak gayet dizi)
class Item < ActiveRecord::Base
belongs_to :item_thing, :polymorphic => true
end
döner, ben "öğeleri" o diziyi alıp öğenin ait olduğu sınıf dayalı farklı şablonlar kullanmak istiyorum. Aşağıdaki dosya yolu "görüntüleme/API/ürün/show.jbuilder"
json.extract! @item, :name
json.items @item.item_array do |item|
if item.class == 'Book'
json.partial! 'api/books/show', item
end
if item.class == 'Car'
json.partial! 'api/cars/show', item
end
end
araba ve kitap şablon yolları "görüntüleme/API/Arabalar/show.json.jbuilder" ve "görüntüleme/API/kitaplar olduğunu /show.json.jbuilder
Yukarıdaki şablondan json'u aldığımda, FirstModel nesnesinin adı görünür olurken, öğeler dizisi boştur, oysa ben, her öğe için bir dizi karmaşayı elde etmeye çalışıyorum. kendi ilgili şablonu.
yardımcı olduğunuz için teşekkür ederiz!