我有一个简单的 eRubis (*.html.erb) 文档,并且想在整个页面中“复制”各种元素。每当我使用像这样的简单 Ruby 语句时:
<%= 3.times do %> ... <% end %>
其中包含多个“times”语句来复制更多元素会返回错误或可怕的渲染元素。使用 Ruby 语句在整个 eRubis 页面中“复制”多个元素的最佳方式是什么?
问问题
39 次
1 回答
1
我在 RoR 中使用的一种方法是content_for
和yield
. 我将元素存储在 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 %>
那些yield
s 可以去任何地方,你甚至可以content_for
在你的布局文件中放置这些yield
s 并根据需要多次将它们放在任何视图或部分中。
如果你想简单地模拟一个列表或其他东西,times
如果你正确使用它,效果会很好:
<ul>
<% 10.times do |i| %>
<li id="item_#{i}">
content in item <%= i %>
</li>
<% end %>
</ul>
但当然,该times
方法要求所有元素都在同一个位置。这就是content_for
/yield
方式的优势,你可以将yield
s 放在任何你想要的地方。你甚至可以把 a 放在 ayield
里面times
:
<% 10.times do |i| %>
<%= yield :some_elements %>
<% end %>
但这太疯狂了。不管怎样,玩得开心。
于 2013-12-12T15:51:03.243 回答