2012-02-28 27 views
2

我在Ruby on Rails應用程序中工作。我有這樣造成的div循環:如何將左右類添加到Ruby on Rails循環中的每個其他元素?

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

而且我需要的輸出完全有其他分區浮動左或右像這樣:

<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"每兩個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> 

我研究,並發現了一個fewposts說,替代類的C通過使用cycle()可以輕鬆完成,而且確實有效。然而,當我使用它在兩個地方在循環中它停止工作的權利,只是輸出是這樣的:

<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> 

什麼是最好的實踐方式在Ruby on Rails的在循環交替的班,也可以增加每隔一個循環的東西?

回答

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時,不會使用循環。 – 2012-02-28 00:42:34

+0

編輯了答案。你需要分批做兩個。 – 2012-02-28 00:57:50

1

這裏最好的東西似乎是使用每個索引。這樣你可以做一些簡單的模數運算來確定數字是奇數還是偶數,並輸出正確的類並添加清除。

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

那麼你得到我的漂移,我在我的手機上。

相關問題