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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

1268閲覧

未ログイン時にusers/showアクション(マイページを見る)を実行すると、「undefined method `id' for nil:NilClass」エラーが出てしまう

akaki

総合スコア15

Ruby on Rails 5

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

Ruby on Rails

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

0グッド

0クリップ

投稿2020/05/13 06:51

前提・実現したいこと

未ログイン時に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

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

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

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

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

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

guest

回答1

0

ベストアンサー

loginしていないということはcurrent_userがnilだってことです

投稿2020/05/13 07:18

winterboum

総合スコア23347

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

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

akaki

2020/05/13 07:59 編集

解決しませんでした。 ifで設定しているので、current_userがnilの場合は編集ボタンなどが表示されずにマイページに飛べるはずなのですが、「undefined method `id' for nil:NilClass」のエラーが出てしまいます。 原因は何が考えられますでしょうか?大変お手数お掛け致しますが、宜しくお願いします。
winterboum

2020/05/13 09:12

- if @user.id == current_user.id これより前に if はありませんが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問