前提・実現したいこと
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を使用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/17 07:41