Я новичок в Rails, и у меня есть несколько проблем с тем, чтобы попасть в канавку. Я пытаюсь отобразить пользователей и их идентификаторы, но при попытке отобразить идентификатор получаю сообщение об ошибке:
undefined method `id' for #<Person::ActiveRecord_Relation:0x007fc86af3b080>
В качестве теста я удалил часть идентификатора и просто дважды отобразил p.name
, и вот результат:
Users
ID User
Person Person
Person Person Person Person Person Person Person Person Person Person Person Person Person Person Person Person Person Person
Я заметил, если я делаю что-то вроде
<% p = Person.find(1) %>
<% p.name %>
Я вернусь:
Billy
Моя третья и последняя проблема - это таблица, первые две записи остаются в таблице, а остальные просто перемещаются по экрану. Я не часто использую таблицы, это не такая уж большая проблема для меня, я уверен, что со временем смогу разобраться в этой части.
Код, который я использую для возникновения всех этих проблем, приведен ниже:
index.html.erb
Пользователей
<table>
<tr>
<th>ID</th>
<th>User</th>
</tr>
<% p = Person.all %>
<% p.each do |person| %>
<tr>
<td style="width: 50px;"><%= p.id %></td>
<td style="width: 50px;"><%= p.name %></td>
</tr>
</table>
<% end %>
person.rb
class Person < ActiveRecord::Base
validates :name,
presence: true
end
< Сильный > База данных:
mysql> desc people;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> select * from people;
+----+-------+
| id | name |
+----+-------+
| 1 | Billy |
| 2 | Billy |
| 3 | Billy |
| 4 | Billy |
| 5 | Billy |
| 6 | Billy |
| 7 | Billy |
| 8 | Billy |
| 9 | Billy |
| 10 | Billy |
+----+-------+
10 rows in set (0.00 sec)
Любая помощь приветствуется. Спасибо.
2 ответа
Попробуйте это ввиду:
<table>
<tr>
<th>ID</th>
<th>User</th>
</tr>
<% p = Person.all %>
<% p.each do |person| %>
<tr>
<td style="width: 50px;"><%= person.id %></td>
<td style="width: 50px;"><%= person.name %></td>
</tr>
<% end %>
</table>
p
- это массив всех лиц вам следует заменить p.id
и p.name
на person.id
и person.name
, потому что person
представляет один элемент из массива в цикле each
<h1> Users </h1>
<table>
<tr>
<th>ID</th>
<th>User</th>
</tr>
<% p = Person.all %>
<% p.each do |person| %>
<tr>
<td style="width: 50px;"><%= person.id %></td>
<td style="width: 50px;"><%= person.name %></td>
</tr>
<% end %>
</table>
Это заставило его работать отлично. Спасибо всем.
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.
Person.id
в столбце таблицы, тогда как оно должно быть в нижнем регистре какperson.id
.