Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails-使用Group_by时-如何获取索引?_Ruby On Rails_Ruby_Ruby On Rails 3_Enumerable - Fatal编程技术网

Ruby on rails rails-使用Group_by时-如何获取索引?

Ruby on rails rails-使用Group_by时-如何获取索引?,ruby-on-rails,ruby,ruby-on-rails-3,enumerable,Ruby On Rails,Ruby,Ruby On Rails 3,Enumerable,我有以下资料: sets = DataSet.all.group_by{ |data| [data.project_id, "-", data.thread_id].join(" ") } <% sets.each do |range, datas| %> <p><%= range %>:</p> <% datas.each do |data| %> <%=data%> <p>Last

我有以下资料:

sets = DataSet.all.group_by{ |data| [data.project_id, "-", data.thread_id].join(" ") }

<% sets.each do |range, datas| %>
  <p><%= range %>:</p>
  <% datas.each do |data| %>
     <%=data%>
    <p>Last Post<%= data.last.created_at %></p>
  <% end %>
<% end %>
sets=DataSet.all.group_by{| data |[data.project_id,“-”,data.thread_id].join(“”}
:

最后一篇文章

问题是我需要一个索引。因此,我更新了上述内容:

<% sets.each_with_index do |range, datas, i| %>
  <p><%= range %>:</p>
  <% datas.each do |data| %>
     <%= i %>
     <%=data%>
    <p>Last Post<%= data.last.created_at %></p>
  <% end %>
<% end %>

:

最后一篇文章

然后,这将中断,错误为:0:Fixnum的未定义方法'last'


想法?谢谢

您观察到的问题是由于为块分配参数的方式。在第二个示例中,您将看到
range
包含一个数组,该数组包含一个
range
和匹配的
datas
datas
变量包含索引,
i
始终为
nil

这是因为如果ruby“unplats”是块的唯一参数,那么它将数组化。如果您有多个类型(在本例中为数组和整数),则必须提示ruby它应该做什么。最简单的方法是使用括号

<% sets.each_with_index do |(range, datas), i| %>
  ...
<% end %>

谢谢霍尔格,我第一次遇到这种情况。
my_array = [1, 2]
(x, y) = my_array
p x                # prints 1
p y                # prints 2