私は次のようなhtmlテーブルを作成しようとしています:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
私のデータ構造は次のようなものです:@f_ary = [1..250]
これが私のhamlコードです:
%table{:border => "1"}
%tbody
%tr
- cnt = 0
- @f_ary.each do |f|
- cnt += 1
%td= cnt
- if cnt == 5
- cnt = 0
%tr
私の現在の出力は次のようになります:
<table border='1'>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<tr></tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
</tbody>
</table>
私はそれをこのように見せたいです:
<table border='1'>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
</tbody>
</table>
コントローラーに行と列の配列を作成するためのすべてのロジックを配置する必要があります。 Hamlでのビューのレンダリングは非常に簡単になります。
コントローラ:
_@items = [
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]
]
_
表示:
_%table
%tbody
- @items.each do |row|
%tr
- row.each do |column|
%td= column
_
私の例のように配列の配列ではなくアイテムのフラット配列がある場合、flat_array.each_slice(5).to_a
を使用して簡単に変換できます。ここで、_5
_は列の数です。
次のようにeach_sliceを使用できます。
- @f_ary.each_slice(5) do |row|
%tr
- row.each do |cnt|
td=cnt