web-dev-qa-db-fra.com

Boucle dans Ruby on Rails html.erb file

tout le monde, je suis tout nouveau avec Ruby on Rails et j'ai besoin de comprendre quelque chose. J'ai une variable d'instance (@users) et je dois boucler dans un fichier html.erb un nombre limité de fois. J'ai déjà utilisé ceci:

<% @users.each do |users| %>
   <%= do something %>
<%end %>

Mais je dois le limiter à, disons, 10 fois. Que puis-je faire?

26
Stark_kids

Si @users contient plus d'éléments que vous ne souhaitez boucler, vous pouvez utiliser first ou slice:

Utilisation de first

<% @users.first(10).each do |users| %>
  <%= do something %>
<% end %>

Utilisation de slice

<% @users.slice(0, 10).each do |users| %>
  <%= do something %>
<% end %>

Cependant, si vous n'avez pas réellement besoin du reste des utilisateurs du tableau @users, vous ne devez en charger que le nombre nécessaire:

@users = User.limit(10)
30
infused

Vous pourriez faire

<% for i in 0..9 do %>
  <%= @users[i].name %>
<% end %>

Mais si vous n'avez besoin que de 10 utilisateurs dans la vue, vous pouvez le limiter dans le contrôleur lui-même

@users = User.limit(10)
5
Santhosh

Pourquoi ne limitez-vous pas les utilisateurs?

<%= @users.limit(10).each do |user| %>
 ...
<%end%>

Cela utiliserait toujours ActiveRecord pour que vous profitiez des fonctions AR. Vous pouvez également faire un certain nombre de choses telles que:

@users.first(10) ou @users.last(10)

1