前提・実現したいこと
未ログイン時にusersのshowアクション(マイページを見る)を実行しようとすると、「undefined method `id' for nil:NilClass」エラーが出てしまうため解決したい。
エラー遷移の動画⬇︎
発生している問題・エラーメッセージ
NoMethodError in Users#show Showing /Users/takumi/soup/app/views/users/show.html.haml where line #19 raised: undefined method `id' for nil:NilClass
該当のソースコード
UsersController
1class UsersController < ApplicationController 2 def show 3 @user = User.find(params[:id]) 4 @cafeterias = @user.cafeterias 5 end 6 7 def edit 8 @user = User.find(params[:id]) 9 if @user != current_user 10 redirect_to user_path(@user), alert: "他ユーザーの編集はできません" 11 end 12 end 13 14 def update 15 @user = User.find(params[:id]) 16 if @user.update(user_params) 17 redirect_to user_path(@user), notice: "ユーザー情報を更新しました。" 18 else 19 render :edit 20 end 21 end 22 23 private 24 def user_params 25 params.require(:user).permit(:username, :email, :password, :password_confirmation, :profile, :profile_image ) 26 end 27 28end
UsersShowHtmlHaml
1#header.big-bg 2 .wrapper 3 = render "shared/header" 4 .page-title #{@user.username}さんのマイページ 5%section.section 6 .container 7 .columns.is-centered 8 .column.is-8 9 .columns.is-centered 10 .column.is-4 11 %figure.image.is-128x128{style: "margin-left: auto; margin-right: auto;"} 12 = link_to edit_user_path do 13 = attachment_image_tag @user, :profile_image, fallback: "images/no-image.png", class: "profile-image" 14 .column.is-8 15 %table.table.is-fullwidth 16 %tr 17 %td.is-size-4 18 %strong= @user.username 19 - if @user.id == current_user.id 20 %td.is-size-4 21 = @user.email 22 %td 23 = link_to "編集", edit_user_path(@user), class: "button is-primary" 24 %table.table.is-fullwidth 25 %tr 26 %td 27 = @user.profile 28 29%section.section 30 .cafeterias-container 31 .columns.is-multiline 32 - @cafeterias.each do |cafeteria| 33 = render partial: "cafeterias/cafeteria", locals: { cafeteria: cafeteria } 34= render "shared/footer"
試したこと
@userがnilになっているということですが、原因は何が考えられるでしょうか?
補足情報(FW/ツールのバージョンなど)
rails 5.2.4.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/13 07:59 編集
2020/05/13 09:12