undefined方法每个rails错误

Mic*_*eal 5 ruby ruby-on-rails ruby-on-rails-3.1 ruby-on-rails-3.2

我通过位于http://ruby.railstutorial.org的教程在轨道上尝试ruby .我到了可以创建用户的位置,并显示了他们的名字和gravatar:

http://localhost:3000/users/1
Run Code Online (Sandbox Code Playgroud)

现在我想在用户访问时显示所有用户:

http://localhost:3000/users/
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

class UsersController < ApplicationController

  def index
    @user = User.all
  end      

  #...
end
Run Code Online (Sandbox Code Playgroud)

这是我的看法.

#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>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

undefined method `each' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么索引页面不能正常工作.

MrY*_*iji 13

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

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

def index
  @user = User.all
end
Run Code Online (Sandbox Code Playgroud)

按照惯例,当我们从DB中检索多个条目时,我们使用多个名称,这就是您@users在视图中调用(注意's')的原因.只需重命名你@user@users,它会好起来的;)

def index
  @users = User.all
end
Run Code Online (Sandbox Code Playgroud)