我是Ruby ERB页面的新手,我正在尝试使用一个来渲染我的博客。目前我有这个for循环,它在博客页面上每行渲染一个帖子
<% @posts.each do |post| %>
<%= render :partial => 'post', :locals => {:post => post} %>
<% end %>
但是,由于这是for-each循环,我无法在一次迭代中访问两个元素,以告诉循环在每一行上并排渲染两个帖子。如何更改此for循环以在一行上并排呈现两个帖子?
答案 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 %>