syb*_*ind 22 haml ruby-on-rails
我正在尝试制作一个看起来像这样的html表:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
我的数据结构如下:@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 
Run Code Online (Sandbox Code Playgroud)
我目前的输出如下:
<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>
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
    Tod*_*ell 57
您应该尝试在控制器中放置用于创建行和列数组的所有逻辑.然后在Haml中渲染视图变得非常简单:
控制器:
@items = [
  [1,  2,  3,  4,  5],
  [6,  7,  8,  9,  10],
  [11, 12, 13, 14, 15]
]
Run Code Online (Sandbox Code Playgroud)
视图:
%table
  %tbody
    - @items.each do |row|
      %tr
        - row.each do |column|
          %td= column
Run Code Online (Sandbox Code Playgroud)
如果你有一个扁平的项目数组而不是我的例子中的数组数组,你可以轻松转换它flat_array.each_slice(5).to_a,5列数在哪里.
您可以像这样使用each_slice:
- @f_ary.each_slice(5) do |row|
  %tr
    - row.each do |cnt|
      td=cnt
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           33524 次  |  
        
|   最近记录:  |