Loop in Ruby on Rails html.erb file

2019-04-03 09:22发布

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?

3条回答
我想做一个坏孩纸
2楼-- · 2019-04-03 09:36

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)
查看更多
姐就是有狂的资本
3楼-- · 2019-04-03 09:51

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)

查看更多
一夜七次
4楼-- · 2019-04-03 09:54

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)
查看更多
登录 后发表回答