gpt4 book ai didi

ruby-on-rails - 未定义方法 `each' 为 nil :NilClass within Pages#friends

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:50 26 4
gpt4 key购买 nike

我试图让我的关注者显示在页面/ friend 上,但是,我不断收到多个错误,例如未定义方法“each” for nil:NilClass 在我的 Pages#friends 错误中。我正在关注 Michael Harlts 的关注/取消关注教程,但是,我需要调整一些东西,因为我没有关注整个事情。

当用户转到他们的 friend 链接(页面/ friend )时,我希望它显示所有关注他们的人。就像我的 users/index 显示每个人的方式一样。请在下面查看我的代码。任何建议的帮助都会很棒。

页面/ friend

<h1>Friends</h1>

<% @user ||= current_user %>
<% @users.each do |user| %>
<center><%= link_to image_tag(user.avatar.url(:thumb)), user %></center>
<strong><center><br><%= link_to user.name, user %></br></center></strong>
<% if current_user.admin %>
<% end %>
<% end %>

页面/ Controller

  def home
end

def about
end

def friends
end

end

**用户/索引*

<% provide(:title, 'All users') %>
<h1>All users</h1>

<div class="col-md-offset-4 col-med-8">
<div class="panel panel-default">
<div class="panel-heading center">

<% @users.each do |user| %>
<center><%= link_to image_tag(user.avatar.url(:thumb)), user %></center>
<strong><center><br><%= link_to user.name, user %></br></center></strong>
<% if current_user.admin %>

<% @user ||= current_user %>
<div class="stats">
<a href="<%= friends_path(@user) %>">
<strong id="following" class="stat">
<%= @user.followed_users.count %>
</strong>
following
</a>
<a href="<%= friends_path(@user) %>">
<strong id="followers" class="stat">
<%= @user.followers.count %>
</strong>
followers
</a>
</div>


<center><%= link_to "Delete", user, method: :delete, data: { confirm: "Are you sure?" } %></center>
<% end %>
<% end %>

<div class="center">
<%= will_paginate @users, renderer: BootstrapPagination::Rails %>
</div>
</div>

路线

devise_for :admins
devise_for :users

resources :posts
resources :users do
member do
get :following, :followers
end
end

resources :relationships, only: [:create, :destroy]
resources :user_friendships do
member do
put :accept
end
end

get "users/show"


root "pages#home"
get 'feed', to: 'posts#index', as: :feed
get "about" => "pages#about"
get "friends" => 'pages#friends'


match 'users/:id' => 'users#show', via: :get
match 'users/:id' => 'users#index', via: :destroy


match 'users/:id' => 'users#destroy', via: :get
match 'users/:id' => 'users#destroy', via: :delete


get '/:id', to: 'users#show'

用户/控制者

class UsersController < ApplicationController

before_action :correct_user, only: [:edit, :update, :destroy, :following, :followers]
before_action :authenticate_user!, except: [:index, :show]
before_action :admin_user, only: :destroy


def index
@users = User.paginate(page: params[:page], :per_page => 5)
end


def show
@user = User.find(params[:id])

if @user

@posts = @user.posts.all
render actions: :show
else
render file: 'public/404', status: 404, formats: [:html]
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


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

end
end

关系控制者

class RelationshipsController < ApplicationController

before_action :authenticate_user!, except: [:index, :show]


def create
@user = User.find(params[:relationship][:followed_id])
current_user.follow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end

def destroy
@user = Relationship.find(params[:id]).followed
current_user.unfollow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end

end

最佳答案

错误undefined method 'each' for nil:NilClass表示您正在调用 .eachnil 的对象上.

例如这里,@users可能是 nil :

def index
@users = User.paginate(page: params[:page], :per_page => 5)
end

如果您随后调用 <% @users.each ... %> ,你会得到 undefined method错误。您已经在上面发布了很多代码,因此很难确切地知道错误是在哪里抛出的。尝试找出错误发生的确切位置(发布堆栈跟踪会有所帮助),并找出哪个对象是 nil .然后找出为什么它是nil - 没有数据吗?或者您的 ActiveRecord 查询没有返回任何结果?

希望这能为您提供一些指示,让您知道下一步该从哪里开始。

编辑: 正如 mmichael 指出的那样,错误是由于 @users 造成的。在 pages#friends 中未声明.谢谢!

关于ruby-on-rails - 未定义方法 `each' 为 nil :NilClass within Pages#friends,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com