Ради простоты, скажем, у меня есть что-то вроде
<div class='important_class'>
<%= @model.attribute %>
</div>
Представьте, что important_class
div на самом деле представляет собой большую иерархию div, и там было как 7 закрывающих тегов. А теперь представьте, что у меня есть 5 видов, которые выглядят одинаково, кроме содержимого в центре, где у меня могут быть @model1.attribute
, model2.attribute
и так далее. Как лучше всего использовать партиалы в этом случае?
Предлагаемое решение 1
Создайте 2 части с именами _top_part.html.erb
и _bottom_part.html.erb
, которые содержат верхнюю и нижнюю части, а затем используйте их в разных представлениях. И код будет выглядеть как
<%= render 'top_part' %>
<%= @model.attribute %>
<%= render 'bottom_part' %>
Предлагаемое решение 2
На уровне контроллера передайте переменную в представление, чтобы определить, какую часть визуализировать, она будет выглядеть примерно так:
<div class='important_class'>
<%= render @place+'_partial' %>
</div>
Причина, по которой мне не нравится решение 2, заключается в том, что @place слишком тесно связан с частями, и вы можете получить странное поведение при рендеринге одного и того же представления с разных контроллеров.
Предложения