You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将tally统计的数组计数结果以规范HTML表格格式正确展示

错误原因

你的代码无法正常渲染有三个核心问题:

  • Ruby哈希调用each遍历的时候,如果块只写1个接收参数,拿到的是[键, 值]结构的二元数组,不是单独的键对象
  • 你遍历得到的键本身是普通字符串,不存在name、count这两个实例方法,try调用只会返回nil
  • ERB语法中<% %>仅执行代码不输出渲染结果,要把内容输出到页面必须用<%= %>标签;另外tally是数组的统计方法,你持有的已经是统计完成的哈希,直接调用tally只会把哈希对象转成字符串输出,不会做格式转换。
正确实现代码

直接按键值对拆分遍历哈希即可,可直接使用的ERB代码如下:

<table>
  <tr>
    <th>名称</th>
    <th>计数</th>
  </tr>
  <% @array.each do |rating_name, count| %>
  <tr>
    <td><%= rating_name %></td>
    <td><%= count %></td>
  </tr>
  <% end %>
</table>

渲染后会得到结构规整的两列表格,对应你给出的测试数据,输出效果等价于:

名称计数
Very Good24
Good81
Regular3
Bad1
Very Bad1
注意事项
  • 如果你是从原始数组开始做统计,要确保tally方法执行在原始数组上,生成计数哈希后再传入模板遍历:
# 原始评分列表示例
raw_rating_list = ["Very Good", "Good", "Good", "Regular", ...]
# 统计各评分出现次数,生成你需要的计数哈希
@rating_count = raw_rating_list.tally
  • 表头单元格建议使用<th>标签替代<td>,语义更符合HTML规范,浏览器默认会给表头添加加粗居中的展示样式
  • Ruby遍历哈希时推荐直接写两个块参数接收键和值,比手动取数组下标的写法可读性更高,也不容易出错

内容的提问来源于stack exchange,提问作者Carlos Morales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:30:59