我通过位于http://ruby.railstutorial.org的教程在轨道上尝试ruby。 我已经到了可以创建用户的位置,并且显示了他们的名字和gravatar:
http://localhost:3000/users/1
现在我想在用户访问时显示所有用户:
http://localhost:3000/users/
这是我的控制器:
class UsersController < ApplicationController
def index
@user = User.all
end
#...
end
以下是我的观点。
#View for index action in user's controleer
<h1>All users</h1>
<ul class="users">
<% @users.each do |user| %>
<li><%= user.content %></li>
<% end %>
</ul>
我收到以下错误。
undefined method `each' for nil:NilClass
有人可以告诉我为什么索引页面无法正常工作。
答案 0 :(得分:13)
问题来自@users
不存在的变量:
在索引操作中,您将@user
设置为所有用户:
def index
@user = User.all
end
按照惯例,当我们从DB中检索多个条目时,我们使用多个名称,这就是您在视图中调用@users
(注意's')的原因。只需将您的@user
重命名为@users
,就可以了;)
def index
@users = User.all
end