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

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

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

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

Q&A

解決済

1回答

1182閲覧

マイクロポスト検索を導入したいが、NoMethodError: undefined method `activated?' for nil:NilClassと出てしまう。

yamatotto

総合スコア5

Ruby on Rails 5

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

0グッド

0クリップ

投稿2020/09/17 05:38

前提・実現したいこと

railsチュートリアルを終えて、この方の記事を参考にして、マイクロポスト検索を導入しようとしているのですが、下記のエラーメッセージが現れて、導入できません・

発生している問題・エラーメッセージ

NoMethodError: undefined method `activated?' for nil:NilClass

該当のソースコード

Ruby

1class UsersController < ApplicationController 2 before_action :logged_in_user, only: [:index, :edit, 3 :update, :destroy, 4 :following, :followers] 5 before_action :correct_user, only: [:edit, :update] 6 before_action :admin_user, only: :destroy 7 8 def index 9 if params[:q] && params[:q].reject { |key, value| value.blank? }.present? 10 @q = User.ransack(search_params, activated_true: true) 11 @title = "Search Result" 12 else 13 @q = User.ransack(activated_true: true) 14 @title = "All users" 15 end 16 @users = @q.result.paginate(page: params[:page]) 17 end 18 19 def show 20 redirect_to root_url and return unless @user.activated? 21 if params[:q] && params[:q].reject { |key, value| value.blank? }.present? 22 @q = @user.microposts.ransack(microposts_search_params) 23 @microposts = @q.result.paginate(page: params[:page]) 24 else 25 @q = Micropost.none.ransack 26 @microposts = @user.microposts.paginate(page: params[:page]) 27 end 28 @url = user_path(@user) 29 end 30 31 def new 32 @user = User.new 33 # => form_for @user 34 end 35 36 def create 37 @user = User.new(user_params) 38 if @user.save 39 @user.send_activation_email 40 flash[:info] = "Please check your email to activate your account." 41 redirect_to root_url 42 else 43 render 'new' 44 end 45 end 46 47 def edit 48 @user = User.find(params[:id]) 49 end 50 51 def update 52 @user = User.find(params[:id]) 53 if @user.update_attributes(user_params) 54 # Success 55 flash[:success] = "Profile updated" 56 redirect_to @user 57 else 58 # Failure 59 # => @user.errors.full_messages() 60 render 'edit' 61 end 62 end 63 64 def destroy 65 User.find(params[:id]).destroy 66 flash[:success] = "User deleted" 67 redirect_to users_url 68 end 69 70 def following 71 @title = "Following" 72 @user = User.find(params[:id]) 73 @users = @user.following.paginate(page: params[:page]) 74 render 'show_follow' 75 end 76 77 def followers 78 @title = "Followers" 79 @user = User.find(params[:id]) 80 @users = @user.followers.paginate(page: params[:page]) 81 render 'show_follow' 82 end 83 84 private 85 86 def search_params 87 params.require(:q).permit(:name_cont) 88 end 89 90 def user_params 91 params.require(:user).permit( 92 :name, :email, :password, 93 :password_confirmation) 94 end 95 96 def correct_user 97 @user = User.find(params[:id]) 98 redirect_to(root_url) unless current_user?(@user) 99 end 100 101 def admin_user 102 redirect_to(root_url) unless current_user.admin? 103 end 104end

補足情報(FW/ツールのバージョンなど)

Cloud9を使用しています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

NoMethodError: undefined method `activated?' for nil:NilClass

nil には`activated?' というメソッドが存在しない、といってます
@userってのがnilになってませんか

投稿2020/09/17 07:29

y_waiwai

総合スコア87719

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

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

yamatotto

2020/09/17 07:41

ご回答ありがとうございます。無事解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問