Ruby on rails 如何在每个循环中获取上一项

Ruby on rails 如何在每个循环中获取上一项,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个SQL查询,它将信息加载到散列中。我希望遍历这些信息并将其输出到视图中 如果user\u id与前一个对象的user\u id相同,我不想显示该user\u id,只显示名称和其他所有内容。看起来逻辑应该很简单,但作为Ruby和Rails的新手,我不确定到底有什么可以做到这一点 我尝试过类似的方法,但在第一次迭代后,prev\u id从未得到更新: <% @session.each_with_index do |s, x| %> <% if x == 0 the

我有一个SQL查询,它将信息加载到散列中。我希望遍历这些信息并将其输出到视图中

如果
user\u id
与前一个对象的
user\u id
相同,我不想显示该
user\u id
,只显示名称和其他所有内容。看起来逻辑应该很简单,但作为Ruby和Rails的新手,我不确定到底有什么可以做到这一点

我尝试过类似的方法,但在第一次迭代后,
prev\u id
从未得到更新:

<% @session.each_with_index do |s, x| %>
    <% if x == 0 then prev_id = 'nil' end %>
    <% curr_id = s['id'] %>


    <% if curr_id != prev_id %>
        <%= s['id'] %>
    <% end %>

    <%= s['name'] %>
    <%= s['count'] %><br>
    <% prev_id = curr_id %>
<% end %>



非常感谢您的帮助

您必须在循环之外声明您的
prev\u id
,以便在迭代之间保持:

<% prev_id = nil %>
<% @session.each_with_index do |s, x| %>
    <% if x == 0 then prev_id = 'nil' end %>
    <% curr_id = s['id'] %>


    <% if curr_id != prev_id %>
        <%= s['id'] %>
    <% end %>

    <%= s['name'] %>
    <%= s['count'] %><br>
    <% prev_id = curr_id %>
<% end %>



您必须在循环之外声明您的
上一个id
,以便它在迭代之间保持:

<% prev_id = nil %>
<% @session.each_with_index do |s, x| %>
    <% if x == 0 then prev_id = 'nil' end %>
    <% curr_id = s['id'] %>


    <% if curr_id != prev_id %>
        <%= s['id'] %>
    <% end %>

    <%= s['name'] %>
    <%= s['count'] %><br>
    <% prev_id = curr_id %>
<% end %>



您应该使用

<% @session.chunk{|s| s["id"]}.each do |curr_id, a| %>
  <%= curr_id %>
  <% a.each do |s| %>    
    <%= s["name"] %>
    <%= s["count"] %><br>
  <% end %>
<% end %>



您应该使用

<% @session.chunk{|s| s["id"]}.each do |curr_id, a| %>
  <%= curr_id %>
  <% a.each do |s| %>    
    <%= s["name"] %>
    <%= s["count"] %><br>
  <% end %>
<% end %>



当然,事情就这么简单。非常感谢你。马特·莱普利干杯道:“我会尽我所能接受答案。”!为了理解变量作用域,它当然就这么简单。非常感谢你。马特·莱普利干杯道:“我会尽我所能接受答案。”!为了理解变量scopeHey@sawa,我感谢您的帮助,但我还需要名称只出现一次,就像id一样。我不确定这是否可能与chunk有关。Matt,只需更改
Wow,
chunk
是一个非常有趣的方法。进入Ruby 12年,却从未听说过。它类似于
group\u by
,但只对连续相似的项目进行分组。迷人。嘿@sawa,我感谢你的帮助,但我也需要名字只出现一次,就像id一样。我不确定这是否可能与chunk有关。Matt,只需更改
哇,
chunk
是一种非常有趣的方法。进入Ruby 12年,却从未听说过。它类似于
group\u by
,但只对连续相似的项目进行分组。太棒了。马特,我建议你以后在做出选择之前先等一会儿(也许至少要等几个小时)。快速选择可能会阻碍其他答案,imo对那些仍在研究答案的人不太体谅。不要着急。你的逻辑不应该在你的视野中,它应该在你的控制器中。将结果分配给一个变量,并在视图中访问该变量。Matt,我建议您以后在进行选择之前再等待一段时间(可能至少需要几个小时)。快速选择可能会阻碍其他答案,imo对那些仍在研究答案的人不太体谅。不要着急。你的逻辑不应该在你的视野中,它应该在你的控制器中。将结果指定给变量并在视图中访问该变量。