2

この質問を見つけました。これには、まさに私が始めようとした答えがあります。ただし、意図した結果は得られません。

arrayを指定@itemsすると、3 つの項目ごとに新しい行を作成したいと考えています。これは現在私のマークアップです:

- @items.each_with_index do |item, index|
  - if index % 3 == 0
    %div.row-fluid
  %div.span4
    %div.item-container
      use item

これにより、htmlが次のようにレンダリングされます

<div class="row-fluid"></div>
<div class="span4">...</div>
<div class="span4">...</div> 
<div class="span4">...</div>
<div class="row-fluid"></div>
<div class="span4">...</div>
<div class="span4">...</div> 
<div class="span4">...</div>

もちろん、私が欲しいのは:

<div class="row-fluid">
    <div class="span4">...</div>
    <div class="span4">...</div> 
    <div class="span4">...</div>
</div>
<div class="row-fluid">
    <div class="span4">...</div>
    <div class="span4">...</div> 
    <div class="span4">...</div>
</div>

ここでどこが間違っていますか?

4

1 に答える 1

7

Array#in_groups_ofを使用してコレクションを分割し、それを繰り返します。

- @items = (1..20).to_a
- @items.in_groups_of(3, false).each_with_index do |group, index|
  .row-fluid
    - group.each do |item|
      .span4= "group: #{index}; item: #{item}"

ヒント:タグ定義を省略して、デフォルトで。にすることができます%div%div.span4正義.span4になりました。

于 2013-02-17T07:50:27.277 に答える