everybody
I'm brand new with Ruby on Rails and I need to understand something. I have an instance variable (@users) and I need to loop over it inside an html.erb file a limitated number of times.
I already used this:
<% @users.each do |users| %>
<%= do something %>
<%end %>
But I need to limitate it to, let's say, 10 times. What can I do?
If @users
has more elements than you want to loop over, you can use first
or slice
:
Using first
<% @users.first(10).each do |users| %>
<%= do something %>
<% end %>
Using slice
<% @users.slice(0, 10).each do |users| %>
<%= do something %>
<% end %>
However, if you don't actually need the rest of the users in the @users array, you should only load as many as you need:
@users = User.limit(10)
You could do
<% for i in 0..9 do %>
<%= @users[i].name %>
<% end %>
But if you need only 10 users in the view, then you can limit it in the controller itself
@users = User.limit(10)
Why don't you limit the users?
<%= @users.limit(10).each do |user| %>
...
<%end%>
That'd still use ActiveRecord so you get the benefit of AR functions. You can also do a number of things too such as:
@users.first(10)
or @users.last(10)