循环记录时如何仅输出当前年份?

时间:2016-03-03 21:55:58

标签: ruby-on-rails ruby date

如果<h2>2016</h2> @past_challenges未包含当前年份,如何显示:deadline

视图

<% if @past_challenges_without_deadline_for_current_year %>
  <h2>2016</h2>
<% end %>

控制器

@past_challenges = current_user.challenges.order("deadline ASC").select{ |challenge| challenge.deadline < Date.current if challenge.deadline.present? }
@past_challenges_by_years = @past_challenges.group_by { |t| t.deadline.beginning_of_year }
@past_challenges_without_deadline_for_current_year = ???

分贝

t.date :deadline

enter image description here

Tadman Attempt

<% if @past_challenges_by_years[Date.today.year] ||= [ ] %>
  <h2>2016</h2>
<% end %>

2016年重复。希望它只出现一次。

enter image description here

1 个答案:

答案 0 :(得分:2)

如果你正在迭代一系列事情并希望每年引入标题,那么最有效的方法是使用group_by将它们按年分组,就像你在那里一样,然后迭代它数据集。

<% @past_challenges_by_years.each do |year, challenges| %>
  <h2><%= year%></h2>

  // ...
<% end %>

如有必要,每年都可以通过不同的方式呈现特殊情况。用case语句打破这些。