NoMethodError des Utilisateurs#index "undefined method `chaque' for nil:NilClass'
Je suis un NoMethodError des Utilisateurs#Index avec un "undefined method `chaque' for nil:NilClass " pour la ligne ci-dessous:
<% @users.each do |user| %>
Je ne suis pas sûr de l'endroit où le problème réside. Toute aide est grandement appréciée. Merci à l'avance. Je sais que je suis absent quelque chose d'extrêmement facile ici.
Utilisateur/Index
<div class="page-header">
<center><strong><h1> All Users </h1></strong></center>
</div>
<div class="row">
<% @users.each do |user| %>
<div class="horizontal-align col-md-2">
<div class="user">
<center><%= link_to image_tag(user.avatar.url(:thumb)), user %></center>
<center><br><%= link_to user.name, user %></br></center>
<% if current_user.admin %>
<center><%= link_to "Delete", user, method: :delete, data: { confirm: "Are you sure?" } %></center>
<% end %>
</div>
</div>
<% end %>
</div>
</div>
<div class="center">
<%= will_paginate @users, renderer: BootstrapPagination::Rails %>
</div>
</div>
Utilisateur/Afficher
<% provide(:title, @user.name) %>
<div class="row">
<aside class="span4">
<section>
<h1>
<%= image_tag @user.avatar.url(:thumb) %>
<%= @user.name %>
</h1>
<section>
<%= render 'users/stats' %>
</section>
<% if current_user.following?(@user) %>
<%= render 'users/unfollow' %>
<% else %>
<%= render 'users/follow' %>
<% end %>
Utilisateur/Contrôleur
class UsersController < ApplicationController
before_action :correct_user, only: [:edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]
before_action :admin_user, only: :destroy
def following
@title = "Following"
@user = User.find(params[:id])
@users = @user.followed_users.paginate(page: params[:page])
render 'show_follow'
end
def followers
@title = "Followers"
@user = User.find(params[:id])
@users = @user.followers.paginate(page: params[:page])
render 'show_follow'
end
def index
@users = User.paginate(page: params[:page], :per_page => 20)
end
def show
@user = User.find(params[:id])
if @user
@posts = @user.posts.order("updated_at DESC")
render actions: :show
else
render file: 'public/404', status: 404, formats: [:html]
end
end
def destroy
User.find(params[:id]).destroy
flash[:success] = "Your account has been deleted."
redirect_to root_path
end
def correct_user
@user = User.find(params[:id])
redirect_to root_path
end
def admin_user
redirect_to root_path unless current_user.admin?
end
fin
Ce fichier est l'erreur posée dans? L'erreur backtrace vais vous le dire. Montrer le code autour de l'échec dans votre question.
OriginalL'auteur Annette | 2014-08-19
Vous devez vous connecter pour publier un commentaire.
L'erreur
NoMethodError
signifie que vous appelez une méthode qui n'existe pas pour la classe donnée. Dans ce cas, il estnil:NilClass
qui, évident, ne possède pas la méthodeeach
parce que c'estnil
! Donc, nous allons examiner:Vous appelez
@users.each
qui est l'appel de l'erreur. Car il dit que la méthode si pas défini pour un montant de néant (comme décrit ci-dessus), il nous dit que, leindex
page,@users
estnil
(probablement pas ce qu'il est destiné à être!).Donc il semble que le problème réside dans la définition de votre
@users
. Je ne suis pas entièrement sûr, mais il semble que, dans votreUsersController
que vous avez un supplément deend
après ladef following
qui serait la cause de la manette pour mettre fin prématurément, et donc de ne pas définir@users
. (Vous pouvez le tester en le modifiant pour@users = User.all
qui devrait fonctionner).Laissez-moi savoir comment les choses tourneront
Vous avez probablement ajouter un
end
à la fin du fichier.Nice! J'ai complètement raté. Merci!!!!
OriginalL'auteur Vasseurth