首先,我希望我的理解是正确的,事实上我确实在我的哈希中有一个数组。
我已经到目前为止但似乎无法遍历每个哈希及其数组。我想做的是按照日期(仅限年份)对每个锦标赛进行分组,并在下面列出所有锦标赛。
到目前为止,我的逻辑是
控制器
@tournaments = Tournament.all
@tournament_year = @tournaments.group_by {|y| y.tourn_date.year}
查看
<ul class="resp-tabs-list">
<% @tournament_year.each do |y, t| %>
<li><%= y %></li>
<% end %>
</ul>
的哈希
{2014=>[#<Tournament id: 3, name: "WTS ", tourn_date: "2014-04-26", tourn_location: "Cardiff", created_at: "2014-04-26 14:57:21", updated_at: "2014-04-26 14:57:21">, #<Tournament id: 4, name: "CTS Nottingham", tourn_date: "2014-05-26", tourn_location: "Nottingham", created_at: "2014-04-26 14:57:39", updated_at: "2014-04-26 14:57:48">]}
我想要的输出会低于
<h3>2014</h3>
<ul>
<li>Tournament Name 1</li>
<li>Tournament Name 2</li>
</ul>
<h3>2013</h3>
<ul>
<li>Tournament Name 1</li>
<li>Tournament Name 2</li>
</ul>
任何帮助表示赞赏
由于
答案 0 :(得分:2)
更改您的观点如下:
<ul class="resp-tabs-list">
<% @tournament_year.each do |y, t| %>
<h3><%= y %></h3>
<ul>
<% t.each_with_index do |tournament, i| %>
<li><%= tournament.name %> <%= i %></li>
<% end %>
</ul>
<% end %>
</ul>
答案 1 :(得分:1)
我建议
<% @tournament_year.each do |y, t| %>
<h3> <%= y %></h3>
<ul class="resp-tabs-list">
<% t.each do |tournament| %>
<li><%= "#{tournament.to_s}" %></li>
<% end %>
</ul>
<% end %>
,其中
#app/models/tournament.rb
def to_s
"#{name} #{id}"
end
答案 2 :(得分:0)
我刚刚提出这个解决方案作为一个例子,似乎工作,任何人都可以看到为什么这是不正确的?
<ul class="resp-tabs-list">
<%= @tournament_year.each do |y, t| %>
<li><%= y %></li>
<%= @tournament_year[y].each do |x| %>
<li><%= x.name %></li>
<% end %>
<% end %>
</ul>