【问题标题】:How to iterate through my array within a hash如何在哈希中遍历我的数组
【发布时间】:2014-06-21 02:31:09
【问题描述】:

首先,我希望我的理解是正确的,事实上我的哈希中有一个数组。

到目前为止,我似乎无法遍历每个哈希及其数组。我想做的是按日期(仅限年份)对每个锦标赛进行分组,并将其所有锦标赛列在下面。

到目前为止我的逻辑是

控制器

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

【问题讨论】:

    标签: ruby-on-rails ruby arrays loops hash


    【解决方案1】:

    改变你的看法如下:

    <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。但是,我不认为来自 Tournament Name 1 的 1 是索引。 :)
    • @BroiSatse 来自 OPs 问题,它看起来像一个索引
    【解决方案2】:

    我建议

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

    【讨论】:

      【解决方案3】:

      我刚刚提出了这个解决方案作为一个例子,似乎有效,任何人都可以看出这是不正确的任何原因吗?

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

      【讨论】:

      • tournament[y]t 所以你应该使用 t。 html 与问题中指定的不同。
      猜你喜欢
      • 1970-01-01
      • 2012-08-22
      • 2016-09-03
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      相关资源
      最近更新 更多