DRYest способ проверить, если в первой итерации цикла .each в Ruby/Rails
В моем .erb
у меня есть простой цикл each
:
<%= @user.settings.each do |s| %>
..
<% end %>
Каков самый простой способ проверить, проходит ли он в настоящее время через свою первую итерацию? Я знаю, что могу установить i=0...i++
, но это слишком грязно внутри .erb
. Любые предложения?
Ответы
Ответ 1
Это зависит от размера вашего массива. Если это действительно огромный, вы должны .shift
первый элемент массива, обработать его, а затем отобразить коллекция:
<% user_settings = @user_settings %>
<% first_setting = user_settings.shift %>
# do you stuff with the first element
<%= user_settings.each do |s| %>
# ...
Или вы можете использовать .each_with_index
:
<%= @user.settings.each_with_index do |s, i| %>
<% if i == 0 %>
# first element
<% end %>
# ...
<% end %>
Ответ 2
Самый читаемый способ, который я нахожу, следующий:
<%= @user.settings.each do |s| %>
<% if @user.settings.first == s %>
<% # Your desired stuff %>
<% end %>
<% end %>