5

我正在通过http://ruby.railstutorial.org上的教程尝试 ruby​​ on rails 。我到了可以创建用户并将他们的姓名和头像显示在以下位置的地步:

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

有人可以告诉我为什么索引页面没有按我的意愿工作。

4

1 回答 1

13

问题来自@users不存在的变量:

在您的索引操作中,您设置@user为所有用户:

def index
  @user = User.all
end

按照惯例,当我们从数据库中检索多个条目时,我们使用复数名称,这就是您@users在视图中调用(注意“s”)的原因。只需将您的重命名@user@users就可以了;)

def index
  @users = User.all
end
于 2013-01-31T15:09:23.550 回答