Ruby on rails 按分组数据筛选和映射

Ruby on rails 按分组数据筛选和映射,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个对象数组,其中有以下字段:title、name和url 我的数据: @array = [ { id: 1, title: '123', name: 123 }, { id: 2, title: '123', name: 321 }, { id: 3, title: '1234', name: 123 }, ] 我需要按标题对数据进行分组,然后用名称制作地图 <%= @array.map do |x| %> <div class='col-md-12'&

我有一个对象数组,其中有以下字段:title、name和url

我的数据:

@array = [
  { id: 1, title: '123', name: 123 },
  { id: 2, title: '123', name: 321 },
  { id: 3, title: '1234', name: 123 },
]
我需要按标题对数据进行分组,然后用名称制作地图

<%= @array.map do |x| %>
  <div class='col-md-12'>
    <h3><%= x.title %></h3>
    <div class="row">
      <%= @array.filter do |y| %>
        <div class="col-4">
          <% if y.title === x.title %>
            <p><%= t.name %></p>
          <% end %>
        </div>
      <% end.join.html_safe %>
    </div>
  </div>
<% end.join.html_safe %>
也就是说,我的数组是重复的。。。如何进行


请记住,我在rails视图中

您将获得重复的条目,因为您正在映射所有元素并为块中的每个元素过滤数组

可以使用按标题对数组元素进行分组。然后,您可以遍历这些组并显示每个组的标题和名称。注意,我使用item[:name]来访问散列中的值,因为您的问题提到了一个散列数组。如果使用对象,则应使用哈希访问将其更新为item.name和其他位置

@groups=@array.group_by{| i | i[:title]}
在未来,在选择答案之前等待更长的时间。不用着急。快速选择可以阻止其他答案,降低发现所选答案的任何缺点的可能性,如果稍后发布更好的答案,则会使您处于选择较差答案或更改所选内容并使第一个选中标记的收件人失望的境地。我的评论与您选择的答案没有任何关系,我甚至还没有读过。使用group|U by从您那里生成哈希的替代方法是:h=@array.each_with_objectHash.new{h,k | h[k]=[]{g,h | h[g[:title]{123=>[123321],1234=>[123]}。请参阅文档,了解需要一个块才能理解Hash.new{124; h,k{124; h[k]=[]}函数的形式。顺便说一句,下一票不是我的。
title = '123'
    name = '123'
    name = '321'
title = '123'
    name = '123'
    name = '321'
title = '123'
    name = '123'
<% @groups.each do |title, items| %>
  <h3><%= title %></h3>
  <% items.each do |item| %>
    <p><%= item[:name] %></p>
  <% end %>
<% end %>