Петля в файле Ruby on Rails html.erb
все
Я новичок в Ruby on Rails, и мне нужно что-то понимать. У меня есть переменная экземпляра (@users), и мне нужно перекрыть ее внутри файла html.erb ограниченным количеством раз.
Я уже использовал это:
<% @users.each do |users| %>
<%= do something %>
<%end %>
Но мне нужно ограничить его, допустим, 10 раз. Что я могу сделать?
Ответы
Ответ 1
Если @users
имеет больше элементов, чем вы хотите перебрать, вы можете использовать first
или slice
:
Используя first
<% @users.first(10).each do |users| %>
<%= do something %>
<% end %>
Используя slice
<% @users.slice(0, 10).each do |users| %>
<%= do something %>
<% end %>
Однако, если вам действительно не нужны остальные пользователи в массиве @users, вы должны загружать столько, сколько вам нужно:
@users = User.limit(10)
Ответ 2
Вы могли бы сделать
<% for i in 0..9 do %>
<%= @users[i].name %>
<% end %>
Но если вам нужно только 10 пользователей в представлении, вы можете ограничить его в самом контроллере
@users = User.limit(10)
Ответ 3
Почему вы не ограничиваете пользователей?
<%= @users.limit(10).each do |user| %>
...
<%end%>
Это все равно будет использовать ActiveRecord, чтобы вы могли воспользоваться функциями AR. Вы также можете сделать несколько вещей, например:
@users.first(10)
или @users.last(10)