Ruby on Rails中创建大型Bootstrap表格的循环语法错误解决求助
问题原因
- 直接报语法错误的核心原因是
96.times调用时缺少块关键字do,正确的带块写法应为<% 96.times do |i| %> - 现有代码的嵌套循环逻辑错误:外层循环96次、内层遍历所有工单数据,最终表格行数会是
96 * 工单总条数,不符合你要96行表格的需求
正确实现
场景1:最多展示96条工单数据,不足96条时补空行
<table class="table"> <thead> <tr> <th scope="col">I</th> <th scope="col">Id</th> <th scope="col">Time</th> <th scope="col">Duration</th> <th scope="col">Price</th> <th scope="col">Name</th> <th scope="col">Company</th> <th scope="col">City</th> </tr> </thead> <tbody> <% 96.times do |i| %> <% workorder = @workorders[i] %> <tr> <td><%= i + 1 %></td> <td><%= workorder&.id %></td> <td><%= workorder&.time %></td> <td><%= workorder&.duration %></td> <td><%= workorder&.price %></td> <td><%= workorder&.name %></td> <td><%= workorder&.company %></td> <td><%= workorder&.city %></td> </tr> <% end %> </tbody> </table>
注:代码里的&.是Ruby的安全导航运算符,工单数据不足96条时,后续空行不会调用空对象的属性报错,Rails 5.2及以上版本都支持该语法
场景2:只遍历工单数据,给每条数据加1~96的序号,超过96条的不展示
<table class="table"> <thead> <tr> <th scope="col">I</th> <th scope="col">Id</th> <th scope="col">Time</th> <th scope="col">Duration</th> <th scope="col">Price</th> <th scope="col">Name</th> <th scope="col">Company</th> <th scope="col">City</th> </tr> </thead> <tbody> <% @workorders.first(96).each_with_index do |workorder, i| %> <tr> <td><%= i + 1 %></td> <td><%= workorder.id %></td> <td><%= workorder.time %></td> <td><%= workorder.duration %></td> <td><%= workorder.price %></td> <td><%= workorder.name %></td> <td><%= workorder.company %></td> <td><%= workorder.city %></td> </tr> <% end %> </tbody> </table>
内容的提问来源于stack exchange,提问作者jbeachy
相关产品推荐
相关产品推荐

