Я пытаюсь отобразить коллекцию разных объектов в одном формате для каждого. Я хочу сохранить его СУХОЙ, поэтому я хочу использовать частичные и partial layouts.Rails 3 и частичные макеты
Редактировать - краткое пояснение: мне нужно не показывать общие элементы на всех страницах публикации, а отображать общие свойства/поля для каждого элемента. Вот почему мне нужны частичные макеты, например. макет для частичного, а не макет страницы.
У меня есть коллекция различных объектов:
@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>
.
Любое предложение о том, почему мой частичный макет игнорируется?
ли вы пытались указать: частично напрямую, как в вашем руководстве предложены? _ «Также обратите внимание, что при передаче дополнительных параметров, таких как: layout., Требуется явно указывать: partial. –
См. [Apidoc] (http://apidock.com/rails/ActionView/Partials) для расширенной документации. –
Хорошо заметили, это может объяснить все это ... Это поведение действительно странно и не интуитивно. И это не очень удобно для моего случая из-за * полиморфной * коллекции (частичная зависимость от типа 'p'). Любая идея о том, как получить хороший частичный для каждого объекта элегантный и короткий путь? –