ruby-on-rails – 用户中的NoMethodError #index’未定义方法`每
发布时间:2020-12-17 01:50:46 所属栏目:百科 来源:网络整理
导读:我在用户#Index中得到一个NoMethodError,其中一个’undefined方法`每个’为nil:NilClass’,如下所示: % @users.each do |user| % 我不确定问题出在哪里.任何帮助是极大的赞赏.提前致谢.我知道我在这里错过了一些非常容易的东西. 用户/索引 div class="page
我在用户#Index中得到一个NoMethodError,其中一个’undefined方法`每个’为nil:NilClass’,如下所示:
<% @users.each do |user| %> 我不确定问题出在哪里.任何帮助是极大的赞赏.提前致谢.我知道我在这里错过了一些非常容易的东西. 用户/索引 <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> 用户/显示 <% 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 %> 用户/控制器 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 结束 解决方法
错误NoMethodError意味着您正在调用给定类不存在的方法.在这种情况下,它是nil:NilClass,显然,不包含每个方法,因为它是零!那么让我们来看看:
您正在调用正在调用错误的@ users.each.因为它表示如果nil未定义的方法(如上所述),它告诉我们在索引页面上,@ users是nil(可能不是它的目的!). 所以看起来问题在于你对@users的定义.我并不完全确定,但看起来好像,在你的UsersController中你有一个额外的结束后def,这会导致控制器提前结束,因此不定义@users. (您可以通过将其更改为@users = User.all来测试它,这应该有效). 让我知道事情的结果 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |