0

我有一个表组,其中每个组的名称如下:4O-101A, 4O-101B, 4O-201A

名称中的第四个字符 - 一个数字 - 代表该组的课程编号。40-101A属于课程1。我想为 4 门课程中的每门制作 4 个 html 列表,因此脚本应检查第四个字符并将组放在相应的列表中。

我试图做到这一点,但只是想出了那个丑陋的解决方案。 http://pastebin.com/TVBSQ71q 它有 4 个循环和大量重复代码,但我希望它是 DRY。找不到实现它的方法。

请你帮助我好吗?该代码应为第一门课程生成 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>
4

1 回答 1

2

我将使用以下方法对@groups数组进行分组Enumerable#group_by

@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 %>
于 2013-11-07T12:27:17.707 回答