前提・実現したいこと
Railsで簡単なProgateで作ったようなsnsサービスを作っています。その中でユーザー登録をし、登録したユーザーの名前を表示しようとしたらエラーが出てしまいました。
発生している問題・エラーメッセージ
undefined method `name' for nil:NilClass
Userscontroller
1class UsersController < ApplicationController 2 3 def index 4 @user = User.all.order(created_at: :desc) 5 end 6 def create 7 @user = User.new(name: params[:name], email: params[:email]) 8 @user.save 9 redirect_to("/users/#{@user.id}") 10 end 11 def show 12 @user = User.find_by(id: params[:id]) 13 end 14 15end 16
show.html.erb <h2><%=@user.name %></h2> <p><%=@user.email %></p>
Rails.application.routes.draw do get 'users/index' get '/'=> "home#top" get 'posts/index' => "posts#index" get "posts/new" =>"posts#new" post"posts/create" => "posts#create" get"posts/:id" => "posts#show" get"posts/:id/edit" =>"posts#edit" post"posts/:id/update" =>"posts#update" post"posts/:id/destroy" =>"posts#destroy" get "users/index"=>"users#index" get"users/new" =>"users#new" post"users/create" => "users#create" get"users/:id" =>"users#show" # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
試したこと
set_userがないのではないかという記事(https://teratail.com/questions/218001)を読んで、記事通りset_userを追加したのですが下記のようなエラーが出てしまいました。
Couldn't find User with 'id'=show
###補足情報
Usersにnameカラムはあると認識しているのですが、その認識でよろしいですか?
CREATE TABLE IF NOT EXISTS "users" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/28 05:16
2019/10/28 05:21 編集
2019/10/28 07:24
2019/10/28 07:29
2019/10/28 12:39