Подтвердить что ты не робот

DRYest способ проверить, если в первой итерации цикла .each в Ruby/Rails

В моем .erb у меня есть простой цикл each:

<%= @user.settings.each do |s| %>
  ..
<% end %>

Каков самый простой способ проверить, проходит ли он в настоящее время через свою первую итерацию? Я знаю, что могу установить i=0...i++, но это слишком грязно внутри .erb. Любые предложения?

4b9b3361

Ответ 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 %>