ヘッダーから一覧ページに遷移するときにuninitialized constant UsersControllerというエラー
初めに
- Progateで躓いたところのアウトプットを行うことにより学習効率を向上させる狙いと、備忘録がてらに書いていきます。
エラー内容
ヘッダーの登録者一覧からから一覧ページ遷移する際にエラーが生じた
Railsで定数やclassが定義されていないエラー
コード内容
routes.erb
Rails.application.routes.draw do # newアクションへのルーティングを追加してください get "users/new" => "users#new" get "users/index" => "users#index" get "users/:id" => "users#show" get "posts/index" => "posts#index" get "posts/new" => "posts#new" get "posts/:id" => "posts#show" post "posts/create" => "posts#create" get "posts/:id/edit" => "posts#edit" post "posts/:id/update" => "posts#update" post "posts/:id/destroy" => "posts#destroy" get "/" => "home#top" get "about" => "home#about" end
users_controller
class UsersController < ApplicationController def index @users = User.all end def show @user = User.find_by(id: params[:id]) end end
posts/index.html.erb
<div class="main users-index"> <div class="container"> <h1 class="users-heading">ユーザー一覧</h1> <% @users.each do |user| %> <div class="users-index-item"> <div class="user-right"> <%= link_to(user.name, "/users/#{user.id}") %> </div> </div> <% end %> </div> </div>
posts/application.html.erb
<!DOCTYPE html> <html> <head> <title>TweetApp</title> <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body> <header> <div class="header-logo"> <%= link_to("TweetApp", "/") %> </div> <ul class="header-menus"> <li> <%= link_to("TweetAppとは", "/about") %> </li> <li> <%= link_to("投稿一覧", "/posts/index") %> </li> <li> <%= link_to("新規投稿", "/posts/new") %> </li> <li> <%= link_to("ユーザー一覧", "/users/index") %> </li> <!-- 新規登録ページへのリンクを作成してください --> <li> <%= link_to("新規登録","/users/new")%> </li> </ul> </header> <% if flash[:notice] %> <div class="flash"> <%= flash[:notice] %> </div> <% end %> <%= yield %> </body> </html>
考えたこと
*ヘッダーから一覧は遷移ができている
エラーの内容から@users = users.allに問題がある
name errorから@users = users.allに間違いがる可能性がある
検索結果からusers.rbがない場合やコントローラの名前ミスの可能性もある
結果
*@users = Users.all をUser.allに直すことで解決