Я пытаюсь отобразить коллекцию различных объектов в одном формате для каждого. Я хочу сохранить это СУХОЙ, поэтому я хочу использовать частичные и частичные макеты .
Редактировать - краткое пояснение: мне нужно не отображать общие элементы на всех страницах публикации, а отображать общие свойства / поля для каждого элемента. Вот почему мне нужны частичные макеты, например макет для частичного, а не макет для страницы.
У меня есть коллекция различных предметов:
@publications = Publications.all
# Publication is the parent class
# @publications = [ImagePost, VideoPost, TextPost, ...]
Я хочу отобразить все публикации в списке. У каждой публикации есть некоторые общие свойства: автор, дата, ... Я хочу поместить эти свойства в частичный макет .
Так что, на мой взгляд, для рендеринга коллекции я делаю:
<%= render :partial => 'publications', :locals => {:publications => @publications} %>
В частичном первом уровне views/publications/_publications.html.erb
я зацикливаюсь на элементе и пытаюсь отобразить каждый элемент в его частичном и обычном частичном макете:
<ul class='publications_list'>
<% publications.each do |p| %>
<%= render p, :layout => 'publications/publication_layout' %>
<% end %>
</ul>
Частичное расположение, views/publications/_publication_layout.html.erb
:
<li>
<h2><%= link_to publication.title, publication %></h2>
... Other common properties that I want to display on each item, independently of its type ...
<p><%= yield %></p>
</li>
И, наконец, для каждого типа объекта у меня есть часть (например, image_posts/_image_post.html.erb
и т. Д.), Содержащая код для правильного отображения каждого из них.
Моя проблема: мне не удается отобразить каждую публикацию в общем частичном макете publication_layout
. Этот макет просто игнорируется рельсами. Каждый элемент отображается правильно, но без этого макета, который включает в себя общие свойства и тег <li>
.
Есть ли какие-либо предложения о том, почему мой частичный макет игнорируется?