我是Rails的新手,我遇到了一些问题。 我正在尝试显示用户及其ID,但是当我尝试显示ID时出现错误:
undefined method `id' for #<Person::ActiveRecord_Relation:0x007fc86af3b080>
作为测试,我删除了ID部分并且只显示了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)
非常感谢任何帮助。 谢谢。
答案 0 :(得分:1)
在视图中尝试此操作:
<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
循环中数组中的一项
答案 1 :(得分:1)
<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>
这使它完美地运作。 谢谢大家。