我有一个循环,可以通过场景通过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.first
,e.assessment_date[0]
似乎不是可行的选择。
答案 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
。