Модель (FirstModel) в моем приложении rails имеет отношение has_many с другой моделью (Item).
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
Сам предмет принадлежит :item_thing через полиморфную ассоциацию. Метод в FirstModel возвращает массив «элементов», а не объект модели соединения (который относится к классу Item), а item_thing каждого объекта Item, и, следовательно, это массив объектов разных классов (проверено в консоли рельсов, и метод возвращает массив просто отлично)
class Item < ActiveRecord::Base
belongs_to :item_thing, :polymorphic => true
end
В моем show.json.jbuilder для FirstModel я хочу взять этот массив «элементов» и использовать разные шаблоны в зависимости от того, к какому классу принадлежит элемент. Следующий путь к файлу — «views/api/items/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
Пути к шаблонам автомобилей и книг — «views/api/cars/show.json.jbuilder» и «views/api/books/show.json.jbuilder».
Когда я получаю json из приведенного выше шаблона, имя объекта FirstModel видно, массив элементов пуст, тогда как я пытаюсь получить массив хэшей для каждого элемента, отображаемый через соответствующий шаблон.
Спасибо за помощь!