Rails - 按条目名称将条目拆分为4个列表的最佳方法

时间:2013-11-07 12:13:20

标签: html ruby-on-rails ruby

我有一个表组,其中每个组的名称如下: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>

1 个答案:

答案 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 %>