我有一个表组,其中每个组的名称如下:4O-101A, 4O-101B, 4O-201A
等
名称中的第四个字符 - 数字 - 表示该组的课程编号。 40-101A
属于课程1
。我想为4门课程中的每门课程制作4个html列表,因此脚本应该检查第四个字符并将该组放在相应的列表中。
我试图制作它,但只提出了那个丑陋的解决方案。 http://pastebin.com/TVBSQ71q 它有4个循环和很多重复代码,但我希望它是干的。找不到实现它的方法。
你能帮帮我吗?代码应生成4个列表,看起来像第一个课程<h3>1 course:</h3>
<ul class='group-list'>
<%@groups.each do |group|%>
<% if group.name.slice(3, 1) == '1' %>
<li id='<%= group.id %>'>
<button class='ui-list'><%= link_to group.name , group %></button>
<% if admin %>
<div class='btn-con'><%= link_to 'Delete', group, remote: true, method: :delete%></div>
<% end %>
</li>
<%end %>
<%end%>
</ul>
答案 0 :(得分:2)
我会使用Enumerable#group_by
对@groups
数组进行分组:
@groups_by_course_number = @groups.group_by { |group| group.name[3] }
这将返回一个哈希,其中课程编号为键。在您看来:
<% @groups_by_course_number.each do |course_number, groups| %>
<h3><%= course_number %> course:</h3>
<ul class='group-list'>
<% groups.each do |group| %>
<li id='<%= group.id %>'>
...
</li>
<% end %>
</ul>
<% end %>