0

我有一个简单的 eRubis (*.html.erb) 文档,并且想在整个页面中“复制”各种元素。每当我使用像这样的简单 Ruby 语句时: <%= 3.times do %> ... <% end %>其中包含多个“times”语句来复制更多元素会返回错误或可怕的渲染元素。使用 Ruby 语句在整个 eRubis 页面中“复制”多个元素的最佳方式是什么?

4

1 回答 1

1

我在 RoR 中使用的一种方法是content_foryield. 我将元素存储在 a 中content_for,然后yield在我想要该元素的任何地方乱扔 s:

<% 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 %>

那些yields 可以去任何地方,你甚至可以content_for在你的布局文件中放置这些yields 并根据需要多次将它们放在任何视图或部分中。

如果你想简单地模拟一个列表或其他东西,times如果你正确使用它,效果会很好:

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

但当然,该times方法要求所有元素都在同一个位置。这就是content_for/yield方式的优势,你可以将yields 放在任何你想要的地方。你甚至可以把 a 放在 ayield里面times

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

但这太疯狂了。不管怎样,玩得开心。

于 2013-12-12T15:51:03.243 回答