Получить первый элемент в результатах each_with_index - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть цикл, который собирает все элементы со значением индекса 0 через has_many через сценарий.

<% @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.first, e.assessment_date[0] не представляется приемлемым вариантом.

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете достичь этого разными способами. Следуя своей идее цикла, вы также можете использовать 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, если вы хотите его напечатать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...