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