获得each_with_index结果中的第一项

时间:2018-10-31 21:13:02

标签: ruby-on-rails ruby-on-rails-5

我有一个循环,可以通过场景通过has_many收集索引值为0的所有项目。

<% @trial.treatment_selections.each do |t| %>
    <% t.establishment_methods.each_with_index do |e, index| %>
        <% if index == 0 %>
            <%= index %> | <%= e.assessment_date %><br />
        <% end %>
    <% end %>
<% end %>

此结果将放置4个具有相同值的日期,且所有索引的索引都均为0。

0 | 2018-12-31
0 | 2018-12-31
0 | 2018-12-31
0 | 2018-12-31

我的问题是,有没有办法只抓住循环中的第一项? e.assessment_date.firste.assessment_date[0]似乎不是可行的选择。

1 个答案:

答案 0 :(得分:1)

您可以通过不同的方式实现它。按照您的循环想法,您也可以在第一个循环中使用each_with_index

<% @trial.treatment_selections.each_with_index do |t, outer_index| %>
    <% t.establishment_methods.each_with_index do |e, inner_index| %>
        <% if outer_index == 0 && inner_index == 0 %>
            <%= inner_index %> | <%= e.assessment_date %><br />
        <% end %>
    <% end %>
<% end %>

但是最好的方法只是一行

0 | <%= @trial.treatment_selections.first&.establishment_methods.first&.assessment_date %>

当您要打印索引时,索引将始终为0