尝试显示数据库中的数据,但改为重复变量名称

时间:2014-12-15 21:39:22

标签: ruby-on-rails ruby ruby-on-rails-4

我是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)

非常感谢任何帮助。 谢谢。

2 个答案:

答案 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.idp.name更改为person.idperson.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>

这使它完美地运作。 谢谢大家。