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

慣例により、DBから複数のエントリを取得する場合は複数形の名前を使用します。そのため、ビューで呼び出している@users(「s」に注意してください)。@user名前をに変更するだけ@usersで大​​丈夫です;)

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