Ruby on rails Rails4:如何忽略每个循环中的相同值

Ruby on rails Rails4:如何忽略每个循环中的相同值,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我想做的是在每个循环中第一次显示相同的值 例如,即使有大量的a.Day=1,也会在第一个循环中显示“Day 1” 我试过一些密码,但我做不到。请告诉我如何显示该值 视图代码 <% @article.each do |a| %> <h3>Day<%= a.day %></h3> <strong><%= a.title %></strong><br> <% end %>

我想做的是在每个循环中第一次显示相同的值

例如,即使有大量的
a.Day=1
,也会在第一个循环中显示“Day 1”

我试过一些密码,但我做不到。请告诉我如何显示该值

视图代码

  <% @article.each do |a| %>
    <h3>Day<%= a.day %></h3>
    <strong><%= a.title %></strong><br>
  <% end %>

如果我理解正确的话,我想你是想把同一天的标题放在一个标题下。您可以使用
group\u by
实现这一点,如下所示:

# `group_by` returns a hash with days as keys and arrays of matching articles as values
<% @article.order(:day).group_by(&:day).each do |day, articles| %>
  <h3>Day <%= day %></h3>

  # we then iterate over the articles matching this day
  <% articles.each do |article| %>
    <strong><%= article.title %></strong><br/>
  <% end %>
<% end %>
#`group_by`返回一个散列,其中以天为键,以匹配的项目数组为值
白天
#然后,我们反复阅读与今天匹配的文章


您可以在.

中阅读更多关于
group\u by
的信息。您应该做的是直接在ActiveRecord的模型上获取唯一值

但是,您可以使用
uniq
方法:

<% @articles.each.uniq { |article| article.day } do |a| %>
  <h3>Day<%= a.day %></h3>
  <strong><%= a.title %></strong><br>
<% end %>

白天


希望得到以下帮助:)

不清楚您在寻求什么帮助。例如,您提到第一个循环,在您的问题中只有一个循环。通过在模型中定义一个范围并从控制器调用该范围,这不是更好地实现吗;上面的解决方案在架构上留下了一些需要改进的地方,但它在提出问题的上下文中说明了答案。
<% @articles.each.uniq { |article| article.day } do |a| %>
  <h3>Day<%= a.day %></h3>
  <strong><%= a.title %></strong><br>
<% end %>