質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1446閲覧

undefined method `any?' for nil:NilClassが解決できない|rails

hazu

総合スコア33

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/03/16 16:07

以下のようなエラーが発生して困っています。

NoMethodError in Users#followings Showing /home/ec2-user/environment/microposts/app/views/users/_users.html.erb where line #1 raised: undefined method `any?' for nil:NilClass
-- users.html.erb -- <% if users.any? %> ⇦エラー部分 <ul class="media-list"> <% users.each do |user| %> <li class="media"> <div class="media-left"> <img class="media-object img-rounded" src="<%= gravatar_url(user, { size: 50 }) %>" alt=""> </div> <div class="media-body"> <div> <%= user.name %> </div> <div> <p><%= link_to 'View profile', user_path(user) %></p> </div> </div> </li> <% end %> </ul> <%= paginate users %> <% end %>
-- users_controller.rb -- class UsersController < ApplicationController before_action :require_user_logged_in, only: [:index, :show, :followings, :followers] def index @users = User.all.page(params[:page]) end def show @user = User.find(params[:id]) @microposts = @user.microposts.order('created_at DESC').page(params[:page]) counts(@user) end def new @user = User.new end def create @user = User.new(user_params) if @user.save flash[:success] = "ユーザを登録しました。" redirect_to (user_url(@user.id)) # @user else flash.now[:denger] = "ユーザの登録に失敗しました。" render :new end end
-- index.html.erb -- <%= render 'users', users: @users %>
-- routes.rb -- Rails.application.routes.draw do root to: 'toppages#index' get 'login', to: 'sessions#new' post 'login', to: 'sessions#create' delete 'logout', to: 'sessions#destroy' get 'signup', to: 'users#new' resources :users, only: [:index, :show, :new, :create] do member do get :followings get :followers end end resources :microposts, only: [:create, :destroy] resources :relationships, only: [:create, :destroy] end

Google翻訳の結果

未定義のメソッド `any? ' nilの場合:NilClass

このエラーの原因はusersがnilになっているのが問題なのでしょうか?

nilでエラーが出ているということは何かしらの値が入っていればOKということですか?

エラーの原因または解決方法がわかる方、ご教授お願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

users.any? で users が nil なので、このエラーが発生しています。

ユーザー登録な無い状態だと @users は nil になっているはずです。

追記
pry をつかって、 users の値を実際にしらべるとよいです。

参考

  • Rails で Pry を使う

https://qiita.com/silmisilon/items/8e08435204d8d08d09ff

  • Railsのbinding.pryはviewにも仕掛けられるよ!!!

https://qiita.com/kosukeKK/items/aa6a8cc1d57a42134b9d

投稿2019/03/16 22:29

編集2019/03/16 22:34
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hazu

2019/03/17 03:23

回答ありがとうございます。 教えていただいた通り、binding.pryを使って色々調べた結果、renderの入力が間違っていただけでした。 <%= render 'users', users: @followers %> × <%= render 'users', users: @followings %> ◯
katoy

2019/03/17 03:41

コードを眺めてもわからない場合は、デバッガで状況をしらべると、思いちがいや、コードのミスを見つけるられうことが多いですね。 (デバッグの仕方を習得することで、QAサイトに質問を出して回答を待つよりも遥かに効率よく問題解決できると思っています)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問