Как элементы в документе eRubis клонируются по всей странице?

0

У меня есть простой документ eRubis (*.html.erb) и вы хотите "скопировать" различные элементы на странице. Всякий раз, когда я использую простые операторы Ruby следующим образом: <%= 3.times do %>... <% end %> с несколькими <%= 3.times do %>... <% end %> "times" внутри этого, чтобы скопировать больше элементов, возвращает либо ошибки, либо ужасно визуализированные элементы. Каков наилучший способ "скопировать" несколько элементов на странице eRubis с помощью команд Ruby?

  • 0
    Вы использовали частичные раньше? Кажется, это точно описывает проблему, для решения которой они используются.
  • 0
    Конечно. Единственная проблема заключается в том, что вам все еще нужен оператор Ruby для многократной визуализации этой части.
Теги:
erubis
eruby

1 ответ

1
Лучший ответ

Один подход, который я использую в RoR, - content_for и yield. Я храню элементы в content_for а затем я убираю yield везде, где захочу этот элемент:

<% content_for :some_elements do %>
  <divs or whatever />
  <and maybe some things too />
  <%= even some more erb %>
<% end %>

<%= yield :some_elements %>
<%= yield :some_elements %>
<%= yield :some_elements %>

Те, yield может идти в любом месте, вы можете даже иметь content_for в файле макета и поместить эти yield в любом виде или частичными столько раз, сколько вы хотите.

Если вы хотите просто макетировать список или что-то в этом роде, times работает отлично, если вы используете его правильно:

<ul>
  <% 10.times do |i| %>
    <li id="item_#{i}">
      content in item <%= i %>
    </li>
  <% end %>
</ul>

Но, конечно, times подход требует, чтобы все элементы в том же месте. Это преимущество метода content_for/yield, вы можете поместить yield туда, где захотите. Вы можете даже положить yield внутри times:

<% 10.times do |i| %>
  <%= yield :some_elements %>
<% end %>

Но это просто безумие. Во всяком случае, получайте удовольствие.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню