2012-05-31 55 views
5

我有三個陣列,我想垂直排列在HTML表格中。每個數組將從上到下將其數據填充到列中。如何垂直填充數據表?

例如,我有三個數組:

fruit = ['pear', 'apple', 'orange'] 
veges = ['corn', 'radish', 'lettuce'] 
meat = ['beef', 'chicken', 'pork'] 

我想表看起來像這樣:

<table> 
    <tr> 
    <td> 
     pear 
    </td> 
    </tr> 
    <tr> 
    <td> 
     corn 
    </td> 
    </tr> 
    <tr> 
    <td> 
     beef 
    </td> 
    </tr> 

    <tr> 
    <td> 
     apple 
    </td> 
    </tr> 
    <tr> 
    <td> 
     radish 
    </td> 
    </tr> 
    <tr> 
    <td> 
     chicken 
    </td> 
    </tr> 

    <tr> 
    <td> 
     orange 
    </td> 
    </tr> 
    <tr> 
    <td> 
     lettuce 
    </td> 
    </tr> 
    <tr> 
    <td> 
     pork 
    </td> 
    </tr> 
</table> 
+0

同樣的問題,沒有解決方案(還):http://stackoverflow.com/questions/3669957/transpose-a-html-table – joeytwiddle

+0

和另一個:http://stackoverflow.com/questions/2128663/display-data- in-columns-not-rows-using-ruby-on-rails – joeytwiddle

回答

1

看看這個網站:Generate vertically-ordered HTML table in Ruby

這裏是相關的代碼(在這個例子中的實例變量只是爲了清楚地確定什麼控制了列和行的數量):

<table> 
    <tbody> 
    <% 0.upto(@rows_per_column-1).each do |row| %> 
     <tr> 
     <% 0.upto(@columns-1).each do |column| %> 
     <% index = row + (column * @rows_per_column) %> 
     <td><%= index %></td> 
     <% end %> 
     </tr> 
    <% end %> 
    </tbody> 
</table> 
4

我可能會使用Array#transpose重新安排的東西,以配合您<table>應該是什麼樣子:

rows = [ fruit, veges, meat ].transpose 

現在rows看起來像:

[ 
    ["pear", "corn", "beef"], 
    ["apple", "radish", "chicken"], 
    ["orange", "lettuce", "pork"] 
] 

,並生成你的表是一個簡單的迭代過程rows

%table 
    - rows.each do |row| 
    %tr 
     - row.each do |food| 
     %td= food 
+1

+1「'transpose'。這是完美的。 –