2012-02-28 1 views
2

私はRuby on Railsアプリケーション内で作業しています。私はこのようなdivを作成するループがあります。Ruby on Railsのループ内の他のすべての要素に左右のクラスを追加するにはどうすればよいですか?

<% @snorks.each do |snork| -%> 
    <div> 
    <%= snork %> 
    </div> 
<% end %> 

を私は他のすべてのdiv要素が左浮かべまたは右のようにする必要があり、出力を必要とする:

<div class="left"> 
    Allstar Seaworthy 
</div> 
<div class="right"> 
    Casey Kelp 
</div> 
<div class="left"> 
    Dimmy Finster 
</div> 
<div class="right"> 
    Daffney Gillfin 
</div> 
<div class="left"> 
    Tooter Shellby 
</div> 
<div class="right"> 
    Dr./Uncle Galeo 
</div> 

また、私はdiv要素を追加する必要がありますclass="clear"で2つのずつのdiv、次のように:

<div class="left"> 
    Allstar Seaworthy 
</div> 
<div class="right"> 
    Casey Kelp 
</div> 
<div class="clear"></div> 
<div class="left"> 
    Dimmy Finster 
</div> 
<div class="right"> 
    Daffney Gillfin 
</div> 
<div class="clear"></div> 
<div class="left"> 
    Tooter Shellby 
</div> 
<div class="right"> 
    Dr./Uncle Galeo 
</div> 
<div class="clear"></div> 

私が研究、および代替クラスCのことを言ってfewpostsを発見しましたcycle()を使って簡単に達成することができます。しかし、私はそれが正しい動作を停止ループ内の2つの場所でそれを使用するときに、ちょうどこのような何か出力:

ループで別のクラスにはRuby on Railsでのベストプラクティスの方法は何
<div class="left"> 
    Allstar Seaworthy 
</div> 
<div class="left"> 
    Casey Kelp 
</div> 
<div class="left"> 
    Dimmy Finster 
</div> 
<div class="left"> 
    Daffney Gillfin 
</div> 
<div class="left"> 
    Tooter Shellby 
</div> 
<div class="left"> 
    Dr./Uncle Galeo 
</div> 

、また、追加の他のすべてのループ?

答えて

7

documentationによれば、ネストされたものが必要な場合は名前を付けます。それ以外の場合は、「デフォルト」と矛盾した名前を共有します。

<% @snorks.each do |snork| -%> 
    <div class="<%= cycle('left', 'right') -%>"> 
    <%= snork %> 
    </div> 
    <%= cycle('','<div class="clear"></div>', :name=>"cleardiv") %> 
<% end %> 
1

使用サイクルヘルパー

http://apidock.com/rails/ActionView/Helpers/TextHelper/cycle

<% @snorks.each do |snork| -%> 
    <div class="<%= cycle("left", "right") -%>"> 
    <%= snork %> 
    </div> 
<% end %> 

編集:新しいdiv要素を追加します。次のことができます

<% @snorks.each_slice(2) do |snork_batch| -%> 
<% snork_batch.each do |snork|%> 
    <div class="<%= cycle("left", "right",:name=>"className") -%>"> 
    <%= snork %> 
    </div> 
<%end%> 
<div class="clear"></div> 
    <% reset_cycle("className")%> 
<% end %> 
+0

私はサイクルヘルパーを試してみました。左右の出力にはうまくいきました。私は同じループでもう一度それを使用して、別のループごとに明確な修正divを追加しようとすると、どちらのサイクルも使用されません。 –

+0

は答えを編集しました。あなたは2つのバッチでそれを行う必要があります。 –

1

ここで最高のものはそれぞれのインデックスを使用しているようです。そうすれば、数値が奇数か偶数かを判別し、正しいクラスを出力し、クリアを追加する単純なモジュラス演算を行うことができます。

@snorks.each_with_index do | snork, index| 
    If index%2 == 0 
     class = 'left' 
    else 
     class = 'right' 
    end 

私はドリフトを取得し、私は自分の電話にいます。

関連する問題