Можно ли использовать партиалы для рендеринга в Rails как обертки? - PullRequest
0 голосов
/ 15 января 2011

Я хотел бы визуализировать структуры следующим образом:

<tag1>
  <tag2 someattribute="somevalue">
    <.. lot of things inside ..>
  </tag2>
</tag1>

<tag1>
  <tag2 someattribute="someothervalue">
    <.. different inside things inside ..>
  </tag2>
</tag1>

Tag1, tag2 одинаковы, они просто параметризованы.Внутренняя часть кода меняется.Я попытался реализовать приведенную выше вещь (хамл):

%div{id:['products', id]}
  .products_content
    %div{id:['products', id, 'content'], class:'products_mask'}
      = yield

Это был частичный _content_head.html.haml, который вызывается из шаблона:

= render 'shared/content_head', id: 'all' do
  %h3= Title
  %p= Body of the text.

Моя теориято, что доходность внутри частичного привело бы к рендерингу пропущенного блока, не доказывалось.Есть ли способ использовать партиалы как обертки кода?Можете ли вы предложить мне какое-то решение, как этого достичь?Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 января 2011

Это может быть хорошим использованием метода capture.

Я знаком только с ERB, но вот общая идея:

<% structure = capture do %>
  <h3>Title</h3>
  <p>Body of text</p>
<% end %>

Затем передайте переменную в частичное:

<%= render 'shared/content_head', :structure => structure %>

А внутри частичного выплюнуть переменную structure:

<%= structure %>

Сброс structure несколько раз в представлении при рендеринге партиалов (или, может быть, более уместно, в помощнике?).

0 голосов
/ 14 июля 2015

Я использовал следующее (Rails 4, но я думаю, что оно должно работать и с Rails 3):

<%# app/views/users/_edit.html.erb %>
<%= render layout: 'modal_wrapping' do |f| %>
  <%= f.input :email %>
  ...
<% end %>

.

<%# app/views/users/_modal_wrapping.html.erb %>
<div id='modal'>
  <%= simple_form_for @user do |f| %>
    <%= yield f %>
  <% end %>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...