ルーティングを作成する
Rails.application.routes.draw do
get 'user/:id', to: 'user#show'
end
コントローラーを設定する
class UsersController < ApplicationController
def show
end
end
データベースの中にuserテーブルとその中身があるのかを確認
**********@mbp ****** % mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.28 Homebrew
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+---------------------------+
| Database |
+---------------------------+
| garden_development |
| garden_review_development |
| garden_review_test |
| garden_test |
| information_schema |
| mysql |
| performance_schema |
| sys |
+---------------------------+
8 rows in set (0.03 sec)
mysql> show tables;
ERROR 1046 (3D000): No database selected
mysql> use garden_development
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+------------------------------+
| Tables_in_garden_development |
+------------------------------+
| users |
+------------------------------+
1 row in set (0.00 sec)
mysql> select * from users;
+----+--------------------+
| id | name |
+----+--------------------+
| 60 | ブイゼル |
| 61 | あ |
| 62 | あ |
| 63 | あ |
| 64 | あ |
| 65 | あ |
| 66 | あ |
| 67 | あ |
| 68 | あ |
| 69 | い |
| 70 | あ |
| 71 | あ |
| 72 | ブイゼル |
| 73 | ブイゼル |
| 74 | ブイゼル |
| 75 | ブイゼル |
| 76 | 早起き |
| 77 | a |
| 78 | あ |
+----+--------------------+
19 rows in set (0.01 sec)
usersテーブルはあった。中身も確認
Routing Error
No route matches [GET] "/users/60"
ルーティングがない
Rails.application.routes.draw do
get 'users/:id', to: 'user#show'
end
Routing Error
uninitialized constant UserController Object.const_get(camel_cased_word) ^^^^^^^^^^ Did you mean? UsersController raise MissingController.new(error.message, error.name) ^^^^^
ルーティングの設定がおかしいのに気が付く。
もし会っているのならばNo template for interactive request
が表示されるはずだ。
uninitialized constant UserController
,usersController raise MissingController
でなんとなくコントローラー名が間違っていることに気が付く。
Rails.application.routes.draw do
get 'users/:id', to: 'user#show'
end
Rails.application.routes.draw do
get 'users/:id', to: 'users#show'
end
s
が書かれていなかった。
成功!
No template for interactive request
UsersController#show is missing a template for request formats: text/html
show.htmlを作らなければならない。
<!DOCTYPE html>
<html class="client-nojs" lang="ja" dir="ltr">
<head>
<meta charset="UTF-8"/>
<link rel="stylesheet" href="index.scss">
<title>課題 新規登録ページ</title>
</head>
<body class="abcd">
<div class="edfg">
<div>ユーザー紹介</div>
<div>
<%= @user %>
</div>
<div>
</div>
</div>
<footer id="footer"></footer>
</body>
</html>
@user
インスタンス変数を設定する
class UsersController < ApplicationController
def show
@user = User.find_by(id: params[:id])
end
end
これで:idを基にユーザーを探せるはず。
これでどうだ。
ユーザー紹介 #User:0x0000000110cecc30 と表示された。
何かコントローラか何かで不具合があったと思われる。
解決
インスタンス変数@user
のどの属性を表示すればいいか分からなかっただけだった。
.
.
.
<div>
<%= @user.neme %>
</div>
.
.
.
name属性を付け加えればよかった。
成功!
これだけだと何かひもじいので
progateで勉強した。
create_at
をつけてやればいいかなと思って試してみる
一応my_sqlのカラムには存在はしない
<div>
<%= @user.create_at %>
</div>
NoMethodError in Users#show
が表示されたやはりcreate_at
では表示はされない。
新しくカラムを追加しなければならないらしい。
今はまだmy_sqlでのカラムの追加を知らないのでこれから学ぶことがいっぱいだ。
またHTML/CSSに関する基礎知識も知らないので頑張りたい。
ホーム画面を作ってみる
ルーティングを設定する
Rails.application.routes.draw do
get '/', to: 'home#top'
get 'users/:id', to: 'users#show'
end
class HomeController < ApplicationController
def top
end
end
<!DOCTYPE html>
<html class="client-nojs" lang="ja" dir="ltr">
<head>
<meta charset="UTF-8"/>
<link rel="stylesheet" href="index.scss">
<title>課題 新規登録ページ</title>
</head>
<body class="abcd">
<div class="edfg">
<div>アプリを始めよう!</div>
</div>
<footer id="footer"></footer>
</body>
SyntaxError
/Users/***///app/controllers/home_controller.rb:1: class/module name must be CONSTANT
class homeController < ApplicationController
constant 定数
name must be CONSTANT
は大文字にしろと言う意味だろうか?
そうと察して
class HomeController < ApplicationController
.
.
.
end
にしてみた。
成功!