Stark_kids
Stark_kids

Reputation: 547

Loop in Ruby on Rails html.erb file

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?

Upvotes: 44

Views: 68549

Answers (3)

infused
infused

Reputation: 24337

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 by using limit:

@users = User.limit(10)

Upvotes: 52

Mohamed El Mahallawy
Mohamed El Mahallawy

Reputation: 13852

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)

Upvotes: 0

Santhosh
Santhosh

Reputation: 29124

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)

Upvotes: 9

Related Questions