Ruby ERB页面:在for循环中并排渲染两个部分

时间:2016-10-13 14:48:39

标签: ruby-on-rails ruby erb

我是Ruby ERB页面的新手,我正在尝试使用一个来渲染我的博客。目前我有这个for循环,它在博客页面上每行渲染一个帖子

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

但是,由于这是for-each循环,我无法在一次迭代中访问两个元素,以告诉循环在每一行上并排渲染两个帖子。如何更改此for循环以在一行上并排呈现两个帖子?

2 个答案:

答案 0 :(得分:1)

如果你真的必须输出两个独立的包装元素,你可以从分割集合开始。

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

这就是大约在2008年将你的网页设计基于720或960px宽度进行的时候。

现在使用CSS可以更好地解决这个问题。

答案 1 :(得分:0)

如果您使用的是Bootstrap,也可以使用类似的东西

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