我想做的是在每个循环中首次显示相同的值。
例如,"第1天和第34天;即使有很多a.day = 1
,也会显示在第一个循环中。
我尝试了一些代码,但我无法做到。请告诉我如何显示价值。
查看代码;
<% @article.each do |a| %>
<h3>Day<%= a.day %></h3>
<strong><%= a.title %></strong><br>
<% end %>
架构;
create_table "articles", force: true do |t|
t.integer "category_id"
t.integer "day"
t.string "title"
t.datetime "created_at"
t.datetime "updated_at"
end
答案 0 :(得分:0)
如果我理解正确,我认为您试图在同一天将标题分组到一个标题下。您可以使用group_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 %>
您可以在Enumerable docs中详细了解group_by
。
答案 1 :(得分:0)
您应该做的是直接在ActiveRecord的模型上获取唯一值。
但是,您可以使用uniq
方法:
<% @articles.each.uniq { |article| article.day } do |a| %>
<h3>Day<%= a.day %></h3>
<strong><%= a.title %></strong><br>
<% end %>
希望这有帮助:)