Michael HartlによるRoRチュートリアルと、9.3章「すべてのユーザーの表示」のimに従って、これまでのところすべてがうまく機能しましたが、SQliteデータベースからユーザーを取得しようとすると、nil:NilClassの未定義のメソッド「each」が表示されます。これが私のコントローラーです
class UsersController < ApplicationController
before_filter :signed_in_user, only: [:index, :edit, :update]
before_filter :correct_user, only: [:edit, :update]
.
.
.
def index
@users = User.all
end
end
and my index.html.erb
<ul class="users">
<% @users.each do |user| %>
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
<% end %>
</ul>
このコードを使用すると、nil:NilClassのエラー未定義メソッド`each'が発生します
そして、私がそれをに変更すると
<ul class="users">
<% if @users %>
<% @users.each do |user| %>
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
<% end %>
<% end %>
</ul>
ビューをレンダリングできますが、データベースにユーザーがいますが、0人のユーザーを表示しています。私はいくつかを手動で作成し、「フェイカー」ジェムを使用していくつかを生成しました。RailsコンソールでUser.allと入力すると、100ユーザーの配列が返されます。ここに不足しているリンクが見つからないようです。また、SQliteデータベースブラウザーアプリを使用して、100人のユーザーがいるユーザーモデルを確認しています。私はこれでたくさん働きました、そして、物事を理解することができないようです。
これが私のUser.rbでもあります
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
before_save { |user| user.email = email.downcase }
before_save :create_remember_token
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
validates :password, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
end