前提・実現したいこと
Rails6を実際に動かしながら勉強している者です。
Twitterのようなサービスをイメージして作っており、ユーザーや投稿の詳細画面に、編集ページへのリンクを配置したいのですが、これを本人にしか表示しないようにするステップでつまづいています。
具体的には、ログインしているユーザーにはidがあるためこれでうまくいくのですが、ログインしていないユーザーにはidが割り振られていないのでおそらくこのようなメッセージが出ているのだと思います。
ログインしていないユーザーにもそのページはみてもらえるようにしたいのですが、どうすればいいでしょうか。
エラーメッセージ NoMethodError in Users#show Showing /Users/yuusaku/hyoron24/app/views/users/show.html.erb where line #9 raised: undefined method `id' for nil:NilClass
該当のソースコード
#app/views/users/show.html.erb <body> <div> <% if @user.id == current_user.id %> <%= link_to("アカウント設定", "/users/#{@user.id}/setting") %> <% end %> </div> </body>
#app/views/post/show.html.erb <body> <% if @post.user_id == current_user.id %> <%= link_to("編集","users/#{@post.id}/edit") %> <%= button_to("削除", "/post/#{@post.id}/destroy") %> <% end %> </body>
#app/controller/users_controller class UsersController < ApplicationController def index @users = User.all end def show @user = User.find(params[:id]) #追記 end def edit @user = User.find(params[:id]) #追記 end def user_params params.require(:user).permit(:username, :nickname, :email, :password, :password_confirmation, :icon, :profile) end end
回答1件
あなたの回答
tips
プレビュー