undefined方法每个rails错误

时间:2013-01-31 14:57:10

标签: ruby-on-rails ruby ruby-on-rails-3.1 ruby-on-rails-3.2

我通过位于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

有人可以告诉我为什么索引页面无法正常工作。

1 个答案:

答案 0 :(得分:13)

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

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

def index
  @user = User.all
end

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

def index
  @users = User.all
end