2016-08-31 16 views
0

pages_controller.rbviewでgroup_byの月と年を並べ替える方法は?

@past_challenges_by_years = @past_challenges.group_by { |t| [t.deadline.year, t.deadline.month] } 

がどのように私はこのような月と年とビューでそれを打破し、それを細分化することができます。

2014 # Years 
01 # Months 
    Challenge 
    Challenge 
02 
    Challenge 
08 
    Challenge 
2016 
03 
    Challenge 
08 
    Challenge 

view.html.erb

<% @past_challenges_by_years.sort.each do |year, challenges| %> 
    <%= year %> 
    <%= month %> # I don't know how to define this. 
    <% for challenge in challenges %> 
    etc... 
    <% end %> 
<% end %> 

答えて

1

私はまずキーを並べ替えてから、それらのキーを反復しながら挑戦します。

<% @past_challenges_by_years.keys.sort.each do |(year, month)| %> 
    <%= year %> 
    <br /> 
    <%= month %> 
    <br /> 
    <% @past_challenges_by_years[[year, month]].each do |challenge| %> 
    <%= challenge %> 
    <br /> 

編集:ここでは、年と月のみを1回だけ表示する新しいソリューションです。

@past_challenges_by_years.keys.map { |a| a[0] }.uniq.sort.each do |year| 
    puts year 
    @past_challenges_by_years.keys.select { |a| a[0] == year }.map { |a| a[1] }.uniq.sort.each do |month| 
    puts month 
    @past_challenges_by_years[[year, month]].each do |challenge| 
     puts challenge 
    end 
    end 
end 

私はERBに変換するのに十分なはずだと思います。

+0

スタイルを変更する必要があります。私は私の例にいくつかの最小限のスタイルを追加することができます – kcdragon

+0

私はいくつかの改行を追加しました。 – kcdragon

+1

新しい回答を追加しました。 – kcdragon

関連する問題