'打破'一个表,4列,每个对象两个

时间:2014-03-31 13:05:02

标签: ruby-on-rails ruby-on-rails-3

我在表中显示了来自数据库记录的一些属性(只有两个)。

这是有效的,但现在我想用4列“打破”我的桌子。

示例:

制造商 -------- 型号

苹果--------- iphone

三星---- s3

motorola ---- razr i

在: 制造商 -------- 型号 ---- 制造商 -------- 型号

苹果--------- iphone ------------三星------ s3

motorola ---- razr i

所以,而不是一个对象,我想得到两个。

但是,我发现我怎么能这样做。有什么建议吗?

现在,我的表是:

<l><b><%= t("reports.graphs.mobiles") %></b></l>
<table class="zebra-striped">
<thead>
<tr>
  <th><%= t('labels.maker')%> / <%= t('labels.model')%></th>
  <th><%= t('labels.distribution')%></th>
  <th><%= t('labels.maker')%> / <%= t('labels.model')%></th>
  <th><%= t('labels.distribution')%></th>
</tr>
<% makers_model.each do |maker_model| %>
<tr>
  <td width="50%" ><%= maker_model[0] %></td>
  <td><%= ((maker_model[1].to_f)/(makers_model.inject(0) { |sum, tuple| sum += tuple[1] }) * 100).round(2).to_s + "%" %></td>
  <td width="50%" ><%= maker_model[0] %></td>
  <td><%= ((maker_model[1].to_f)/(makers_model.inject(0) { |sum, tuple| sum += tuple[1] }) * 100).round(2).to_s + "%" %></td>
</tr>
<% end %>


谢谢,拜托,抱歉我的英文

1 个答案:

答案 0 :(得分:1)

<% makers_model.each_slice(2) do |slice| %>
<tr>
  <% slice.each do |maker_model| %>
    <td width="50%" ><%= maker_model[0] %></td>
    <td><%= ((maker_model[1].to_f)/(makers_model.inject(0) { |sum, tuple| sum += tuple[1] }) *   100).round(2).to_s + "%" %></td>
  <% end %>
</tr>
<% end %>

每个切片会将它们分成您指定的任何数字的部分。因此,如果我理解你想要的东西,你可以将它们分成2组,然后在表格中的每一行迭代该组