2016-10-13 7 views
0

Ich bin neu auf Ruby ERB-Seiten und versuche, einen zu verwenden, um meinen Blog zu rendern. Zur Zeit habe ich dies für Schleife, denRuby ERB Seite: Rendern Sie zwei Teiltafeln Seite an Seite in einer for-Schleife

<% @posts.each do |post| %> 
    <%= render :partial => 'post', :locals => {:post => post} %> 
<% end %> 

jedoch auf der Blog-Seite einen Beitrag pro Zeile macht, denn das ist eine for-Schleife jedes ich nicht zwei Elemente in einer Iteration zugreifen kann, die Schleife zu sagen, zwei zu machen Seite an Seite in jeder Reihe. Wie kann ich diese for-Schleife ändern, um zwei Beiträge nebeneinander in einer Zeile darzustellen?

+0

verwenden, die eher eine CSS Frage ist. Verwenden Sie ein Framework, z. Bootstrap/Fundament? –

Antwort

1

Wenn Sie wirklich in zwei separate Wrapper-Elemente ausgeben müssten, würden Sie damit beginnen, die Sammlung aufzuteilen.

<% odd, even = arr.partition.with_index{ |_, i| i.even? } %> 
<div class="column odd"> 
    <% odd.each do |post| %> 
    <%= render :partial => 'post', :locals => {:post => post} %> 
    <% end %> 
</div> 
<div class="column even"> 
    <% even.each do |post| %> 
    <%= render :partial => 'post', :locals => {:post => post} %> 
    <% end %> 
</div> 

Das ist, wie es circa 2008 gemacht worden wäre, wenn Sie Ihr Web-Design aus einer 720 oder 960 x Breite basieren.

Heutzutage ist dieses Problem besser gelöst mit CSS.

+0

Ich benutze Bootstrap, so dass mir reaktionsfähige Spalten geben. Das habe ich gebraucht, danke! –

0

Wenn Sie Bootstrap verwenden, können Sie so etwas wie dieses auch

<% @posts.in_groups_of(2).each do |posts| %> 
    <% # posts is an Array of 2 items %> 
    <div class="col-md-4"><%= render :partial => 'post', :locals => {:post => posts[0]} %></div> 
    <div class="col-md-4"><%= render :partial => 'post', :locals => {:post => posts[0]} %></div> 
<% end %> 
Verwandte Themen