2016-10-13 15 views
0

RubyのERBページが新しく、ブログをレンダリングする際に使用しようとしています。それは私が2をレンダリングするためにループを伝えるために一回の反復で二つの要素にアクセスすることができないため、各ループであるため、現在、私は、しかしRuby ERB Page:forループで2つの部分を並べてレンダリングする

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

ブログページ上の行ごとに1つのポストをレンダリングループのためにこれを持っています各行に並べて投稿します。このforループを変更して、2つの投稿を1つの行に並べて表示するにはどうすればよいですか?

+0

のようなものを使用することができます。あなたはフレームワークを使用していますか?ブートストラップ/基礎? –

答えて

1

本当に2つの別々のラッパー要素に出力する必要がある場合は、コレクションを分割することから始めます。

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

ザッツあなたは720または960ピクセル幅をあなたのWebデザインをオフに基づいたときに、それが2008年ごろに行われていたであろうか。

今日、この問題はCSSで解決しました。

+0

私はブートストラップを使用していますので、それに対応する列が得られます。これは私が必要なものです、ありがとう! –

0

あなたはブートストラップを使用している場合は、CSSの質問の多くはでこのも

<% @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 %> 
関連する問題