1

次のhamlスニペットのために3つをまとめるために、 div.row3つのブロックごとに挿入したいと思います。span

ただし、このコード<div class="row"></div>は、をラップするのではなく挿入し.span4ます。

  - data.apps.applications.each_with_index do |app, index|
  - if index%3 == 0
    .row # This is the line I want to insert
    .span4

どうすればhamlでそれを行うことができますか、この場合erbはより適切ですか?

4

2 に答える 2

8

あなたが望むのは次のようなものだと思います:

-data.apps.applications.each_slice(3) do |apps|
  .row
    -apps.each do |app|
      .span4

これは を使用しeach_sliceます。appsからの 3 つの項目の配列ですapplications

これは から 3 つの要素のグループを取得applicationsし、グループごとにrowdiv を追加し、次にspan4要素ごとに div を追加すると、次のような結果が得られます。

<div class="row">
  <div class="span4"></div>
  <div class="span4"></div>
  <div class="span4"></div>
</div>
<div class="row">
  <div class="span4"></div>
  <div class="span4"></div>
  <div class="span4"></div>
</div>

3 の倍数の要素がない場合、最後のグループには 1 つまたは 2 つのメンバーしかありません。

于 2012-04-23T16:01:03.317 に答える
2

インデントが間違っています

- data.apps.applications.each_with_index do |app, index|
  - if index%3 == 0
    .row # This is the line I want to insert
  .span4
于 2012-04-23T15:57:10.713 に答える