Ruby中如何遍历哈希数组并按标题分组展示描述?
Ruby哈希数组按标题分组展示的最优实现方式
完全不需要用case...when语句,Ruby自带的group_by方法就是最适合这个场景的方案,代码简洁且符合Ruby风格。
步骤1:在控制器中对数据分组
先把原数组按title字段分组,得到一个以标题为键、对应描述数组为值的哈希:
@grouped_examples = @example.group_by { |item| item[:title] }
步骤2:在视图中渲染分组后的数据
遍历分组后的哈希,每个标题只输出一次,下方列出对应的所有描述:
<% @grouped_examples.each do |title, items| %> <!-- 把chapter1格式化为Chapter 1 --> <h1><%= title.capitalize.gsub(/(\d)/, ' \1') %></h1> <% items.each do |item| %> <p><%= item[:description] %></p> <% end %> <% end %>
补充说明
group_by是Ruby Enumerable模块的原生方法,专门用于按指定规则对集合分组,比手动用case...when判断要高效得多,代码可读性也更强。- 推荐在控制器中完成数据分组逻辑,视图只负责渲染内容,符合Rails的MVC设计原则。
内容的提问来源于stack exchange,提问作者userden
相关产品推荐
相关产品推荐

