単純な eRubis (*.html.erb) ドキュメントがあり、ページ全体にさまざまな要素を「コピー」したいと考えています。次のような単純な Ruby ステートメントを使用する
<%= 3.times do %> ... <% end %>
と、その中に複数の "times" ステートメントを使用してより多くの要素をコピーすると、エラーまたは恐ろしくレンダリングされた要素が返されます。Rubyステートメントを使用してeRubisページ全体で複数の要素を「コピー」する最良の方法は何ですか?
1 に答える
1
私が RoR で使用する 1 つのアプローチはcontent_for
andyield
です。要素を a に保存し、その要素が必要な場所に s を散らかします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
の 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
ます。yield
a の中に a を入れることもできますtimes
:
<% 10.times do |i| %>
<%= yield :some_elements %>
<% end %>
しかし、それはただのクレイジーです。とにかく、楽しんでください。
于 2013-12-12T15:51:03.243 に答える