Извините, если об этом спрашивали раньше, возможно, я искал не те ключевые слова.

Я пытаюсь выполнить цикл .each для всех строк таблицы базы данных с именем users, для которых name равно user1. Как это сделать?

В моей модели Пользователь есть таблица БД: пользователи, которая содержит следующие столбцы: name | title | details | amount

На мой взгляд, у меня это:

<div style="width:50%;float:left">
<h3>User1</h3>
<% @User1.each do |i| %>
  <p><%= i.title %></p>
  <p><%= i.details %></p>
  <p>$<%= i.amount %></p>
<% end %>
</div>

<div style="width:50%;float:left">
<h3>User2</h3>
  <% @User2.each do |i| %>
  <p><%= i.title %></p>
  <p><%= i.details %></p>
  <p>$<%= i.amount %></p>
<% end %>
</div>

Для моего контроллера у меня это есть, но выдает ошибку:

@items = User.all
@User1 = @items.where(name: 'user1')
@User2 = @items.where(name: 'user2')

enter image description here

0
iztel 8 Янв 2014 в 01:54

2 ответа

Лучший ответ

Чтобы перебрать массив пользователей, соответствующих тем, что в данном списке, используйте

В вашем контроллере:

 @users = User.where(name: list_of_names)

Где list_of_names - массив строк,

И, на ваш взгляд:

 <% @users.each_with_index do |user, idx| %>
    <div id="user-<%= idx %>">
       <%= user.name %>
       <%= user.details %>
        # etc
    </div>
 <% end %>

И так далее.

Дополнительную информацию см. В руководствах по Rails.

0
Jake Romer 8 Янв 2014 в 01:08

@user1 = User.where(name: "name1").first

@user2 = User.where(name: "name2").first

Это то, что вы хотите?

0
bigpotato 7 Янв 2014 в 22:53