2012-05-31 15 views
5

Mam trzy tablice, które chciałbym ułożyć pionowo w tabeli HTML. Każda tablica będzie zawierała dane w kolumnie od góry do dołu.Jak wypełnić tabelę danymi w pionie?

Na przykład, mam trzy tablice:

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

chcę tabela wygląda następująco:

<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

Ten sam problem, brak rozwiązania (jeszcze): http://stackoverflow.com/questions/3669957/transpose-a-html-table – joeytwiddle

+0

I jeszcze jedno: http://stackoverflow.com/questions/2128663/display-data- w-kolumnach-bez wierszy-za pomocą-ruby-on-rails – joeytwiddle

Odpowiedz

1

Spójrz na tej stronie: Generate vertically-ordered HTML table in Ruby

Oto odpowiedni kod (zmienne instancji w tym przykładzie są używane po prostu dla jasności w określaniu, co kontroluje liczbę kolumn i wierszy):

<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

I pewnie używać Array#transpose zmienić rzeczy, aby dopasować to, co Twój <table> powinna wyglądać następująco:

rows = [ fruit, veges, meat ].transpose 

Teraz rows będzie wyglądać następująco:

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

i generowania tabeli jest prosta sprawa iteracji ponad rows:

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

+1 dla 'transpose'. Jest do tego idealny. –

Powiązane problemy