NoMethodError Benutzer#index 'undefined method `jeder' for nil:NilClass'
Ich bin immer eine NoMethodError Benutzer#Index mit einem 'undefined method `jeder' for nil:NilClass " für die Linie unten:
<% @users.each do |user| %>
Ich bin nicht sicher, wo das problem besteht. Jede Hilfe wird sehr geschätzt. Vielen Dank im Voraus. Ich weiß, ich bin etwas fehlt extrem einfach hier.
User/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>
User/Show
<% 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 %>
User/Controller
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
Ende
In welcher Datei ist der Fehler immer aufgewachsen? Der Fehler Ablaufverfolgung, werden Sie sagen. Zeigen Sie den code um den Fehler in deiner Frage.
InformationsquelleAutor Annette | 2014-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler
NoMethodError
bedeutet, dass Sie eine Methode aufrufen, die nicht existiert, die für die gegebene Klasse. In diesem Fall ist esnil:NilClass
die, offensichtlich, nicht enthalten, die Methodeeach
weil esnil
! Lassen Sie uns also untersuchen:Wird, die Sie anrufen
@users.each
die Berufung der Fehler. Da heißt es, dass die Methode, wenn undefinierten für null (wie oben beschrieben) es sagt uns, dass auf derindex
Seite@users
istnil
(wahrscheinlich nicht das, was es sein soll!).So wie es aussieht das problem liegt in Ihrer definition von
@users
. Ich bin mir nicht ganz sicher, aber so wie es aussieht, in IhremUsersController
Ihnen eine zusätzlicheend
nach derdef following
die dazu führen, dass der controller vorzeitig zu beenden, und daher nicht definieren@users
. (Kann man testen, indem man Sie zu@users = User.all
die funktionieren sollte).Lassen Sie mich wissen, wie die Dinge ausgehen
Sie haben wahrscheinlich hinzufügen eine
end
bis zum Ende der Datei.Schön! Ich völlig verpasst. Danke!!!
InformationsquelleAutor Vasseurth