Я предполагаю, что у вас есть две (или более) отдельные модели для дочерних объектов, поэтому ваша модель Parent
выглядит следующим образом:
class Parent < ActiveRecord::Base
has_many :dogs
has_many :cats
end
Чтобы отсортировать их и получить их, как правило, как children
, вы можете написать метод (аналогично @gertas answer):
def children
@children ||= (self.dogs.all + self.cats.all).sort(&:created_at)
end
и поместите его в Parent
модель. Тогда вы можете использовать его в контроллере:
@parent = Parent.find(params[:id])
@children = @parent.children
Теперь мы попробуем отобразить их в виде. Я предполагаю, что вы создали два партиала для каждой модели _cat.html.erb
и _dog.html.erb
. В поле зрения:
<h1>Children list:</h1>
<% @parent.children.each do |child| %>
<%= render child %>
<% end %>
Он должен автоматически находить, какую часть следует использовать, но он может быть использован только в том случае, если вы следуете пути Rails. Если вы хотите по-разному называть частичные имена или хранить их в другом каталоге, вам придется написать свои собственные методы, которые будут выбирать правильный частичный тип в зависимости от типа объекта od.