0

単純な eRubis (*.html.erb) ドキュメントがあり、ページ全体にさまざまな要素を「コピー」したいと考えています。次のような単純な Ruby ステートメントを使用する <%= 3.times do %> ... <% end %>と、その中に複数の "times" ステートメントを使用してより多くの要素をコピーすると、エラーまたは恐ろしくレンダリングされた要素が返されます。Rubyステートメントを使用してeRubisページ全体で複数の要素を「コピー」する最良の方法は何ですか?

4

1 に答える 1

1

私が RoR で使用する 1 つのアプローチはcontent_forandyieldです。要素を a に保存し、その要素が必要な場所に s を散らかしますcontent_foryield

<% 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これが/の利点です。syieldは好きな場所に配置できyieldます。yielda の中に a を入れることもできますtimes:

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

しかし、それはただのクレイジーです。とにかく、楽しんでください。

于 2013-12-12T15:51:03.243 に答える